C#实现简单打字小游戏

本文实例为大家分享了C#实现简单打字小游戏的具体代码,供大家参考,具体内容如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 打字游戏
{
 public partial class Form1 : Form
 {
  public Form1()
  {
   InitializeComponent();
  }
  Random r = new Random();
  //游戏区
  Panel Gamearea = new Panel();
  //控制区
  Panel area = new Panel();
  //装鸟的盒子
  PictureBox Bird = new PictureBox();
  //字母出现定时器
  Timer zimu = new Timer();
  //飞鸟与字母下落定时器
  Timer fly = new Timer();
  //开始/暂停按钮
  Button button = new Button();
  //积分器
  Label scoring = new Label();
  //血条
  Label Bar = new Label();
  //尾翼
  PictureBox wei = new PictureBox();
  PictureBox weiyi = new PictureBox();
  //装字母的盒子
  List<Label> zmbox = new List<Label>();
  private void Form1_Load(object sender, EventArgs e)
  {
   //button设置
   this.KeyPreview = true;
   //最大化窗口
   this.WindowState = FormWindowState.Maximized;
   //背景图
   this.BackgroundImage = Image.FromFile("../../img/背景 (2).jpg");
   //拉伸
   this.BackgroundImageLayout = ImageLayout.Stretch;
   //游戏区设置
   Gamearea.Size = new Size(1000,750);
   //游戏区位置
   Gamearea.Location = new Point(30,30);
   this.Controls.Add(Gamearea);
   Gamearea.Tag = "game";
   //控制区设置
   area.Size = new Size(300,750);
   //控制区位置
   area.Location = new Point(Gamearea.Left+Gamearea.Width+20,30);
   area.BackColor = Color.Cyan;
   this.Controls.Add(area);
   //开始/暂停按钮
   //Button button = new Button();
   button.Text = "开始";
   this .KeyPreview = true;
   //字体大小
   button.Font = new Font("",20);
   //按钮大小
   button.Size = new Size(100,50);
   //按钮颜色
   button.BackColor = Color.Blue;
   //按钮位置
   button.Location = new Point(100,20);
   area.Controls.Add(button);
   //按钮点击事件
   button.Click += Button_Click;
   //积分器
   //Label scoring = new Label();
   scoring.Text = "积分:0";
   scoring.Font = new Font("",15);
   scoring.Location = new Point(100,100);
   area.Controls.Add(scoring);
   //装鸟的盒子设置
   Bird.Tag = "niao";
   Bird.Size = new Size(200,200);
   Bird.Location = new Point(0,0);
   //动画放入盒子
   Bird.Image = imageList1.Images[0];
   Gamearea.Controls.Add(Bird);
   //飞鸟与字母下落定时器
   //Timer fly = new Timer();
   fly.Interval = 80;
   fly.Tick += Fly_Tick;
   //fly.Start();
   //字母出现定时器
   //Timer zimu = new Timer();
   zimu.Interval = 1000;
   zimu.Tick += Zimu_Tick;
   //zimu.Start();
   //键盘
   this.KeyPress += Form1_KeyPress1;
   //飞机
   //PictureBox plane = new PictureBox();
   plane.Tag = "plane";
   //盒子大小
   plane.Size = new Size(100,100);
   //放进图片
   plane.Image = Image.FromFile("../../img/RP03.png");
   //图片自适应
   plane.SizeMode = PictureBoxSizeMode.StretchImage;
   //飞机位置
   plane.Location = new Point(Gamearea.Width/2-plane.Width/2,Gamearea.Height-plane.Height-60);
   Gamearea.Controls.Add(plane);
   //血条
   //Label Bar = new Label();
   Bar.Tag = "bar";
   Bar.Size = new Size(100, 10);
   Bar.BackColor = Color.Red;
   //位置
   Bar.Left = plane.Left + plane.Width - Bar.Width;
   Bar.Top = plane.Top - Bar.Height;
   Gamearea.Controls.Add(Bar);
   //尾翼
   wei.Tag = "wei";
   wei.Size = new Size(30, 40);
   //位置
   wei.Left = plane.Left + plane.Width / 2;
   wei.Top = plane.Top + plane.Height;
   //图片集放进盒子
   wei.Image = imageList3.Images[0];
   Gamearea.Controls.Add(wei);
   weiyi.Tag = "weiji";
   //图片集放进盒子
   weiyi.Image = imageList3.Images[0];
   weiyi.Size = new Size(30, 40);
   //位置
   weiyi.Left = plane.Left + plane.Width /2-28;
   weiyi.Top = plane.Top + plane.Height;
   Gamearea.Controls.Add(weiyi);
  }
  //按钮设置
  private void Button_Click(object sender, EventArgs e)
  {
   if (button.Text=="开始")
   {
    fly.Start();
    zimu.Start();
    button.Text = "暂停";
   }
   else if (button.Text=="暂停")
   {
    fly.Stop();
    zimu.Stop();
    button.Text = "开始";

   }
  }
  //飞机
  PictureBox plane = new PictureBox();
  //键盘事件
  private void Form1_KeyPress1(object sender, KeyPressEventArgs e)
  {
   //遍历游戏区内所有控件
   foreach (Control item in Gamearea.Controls)
   {
    //找到name为Label的控件
    if (item.GetType().Name == "Label")
    {
     //判断按键与字母是否相同
     if (item.Text == e.KeyChar.ToString()&& item.Tag.ToString() == "zm")
     {
      ////消除字母
      //item.Dispose();
      plane.Left = item.Left + item.Width / 2 - plane.Width / 2;
      //血条随飞机
      Bar.Left = plane.Left + plane.Width - Bar.Width;
      Bar.Top = plane.Top - Bar.Height;
      //尾翼随飞机
      wei.Left = plane.Left + plane.Width / 2;
      wei.Top = plane.Top + plane.Height;
      weiyi.Left = plane.Left + plane.Width / 2 - 28;
      weiyi.Top = plane.Top + plane.Height;
      item.Tag = "bj";
      //创造子弹
      PictureBox bullet = new PictureBox();
      bullet.Tag = "bullet";
      bullet.Size = new Size(10,30);
      //放进图片
      bullet.Image = Image.FromFile("../../img/Ammo1.png");
      //图片自适应
      bullet.SizeMode = PictureBoxSizeMode.StretchImage;
      //子弹位置
      bullet.Location = new Point(plane.Left+plane.Width/2-bullet.Width/2,plane.Top-bullet.Height);
      Gamearea.Controls.Add(bullet);
      return;
     }
    }
   }
  }

  //字母
  private void Zimu_Tick(object sender, EventArgs e)
  {
   //判断飞鸟出现屏幕字母开始下落
   if (Bird.Left >= 0 && Bird.Left <= Gamearea.Width - Bird.Width)
   {
    Label zm = new Label();
    zm.Tag = "zm";
    //随机字母
    zm.Text =((char)r.Next(97,123)).ToString();
    //随机大小
    zm.Font = new Font("",r.Next(10,45));
    //字体自适应
    zm.AutoSize = true;
    //随机颜色
    zm.ForeColor = Color.FromArgb(r.Next(255), r.Next(255), r.Next(255));
    //随着鸟的位置下落
    zm.Top = Bird.Height;
    zm.Left = Bird.Left + Bird.Width / 2 - zm.Width / 2;
    //添加进游戏区
    Gamearea.Controls.Add(zm);
    zmbox.Add(zm);
   }
  }
  //播放飞鸟动画
  int bo = 0;
  //积分
  int fen = 0;
  int t = 0, y = 0;
  private void Fly_Tick(object sender, EventArgs e)
  {
   //飞鸟动画播放
   Bird.Image = imageList1.Images[bo];
   bo++;
   //图片播放完重零开始重新播放
   if (bo >= imageList1.Images.Count)
   {
    bo = 0;
   }
   //遍历控件
   foreach (Control item in Gamearea.Controls)
   {
    //鸟飞
    if (item.Tag.ToString()=="niao")
    {
     item.Left += 10;
     //超出边界重新开始飞
     if (item.Left>=Gamearea.Width)
     {
      item.Left = -item.Width;
     }
    }
    //字母下落
    if (item.Tag.ToString() == "zm"||item.Tag.ToString()=="bj")
    {
     item.Top += 10;
     //超出下边界清除
     if (item.Top+item.Height>=Gamearea.Height)
     {

      item.Dispose();
      Bar.Width -= 10;
      //判断血条为零时
      if (Bar.Width==0)
      {
       fly.Stop();
       zimu.Stop();
       //弹框
       if ( MessageBox.Show("游戏结束,积分为:"+fen,"Game Over", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning) == DialogResult.Retry)
       {
        fly.Stop();
        zimu.Stop();
        //满血条
        Bar.Width = 100;
        //按钮变开始
        button.Text = "开始";
        //积分清零
        scoring.Text = "积分:0";
        //鸟回归原位
        Bird.Location = new Point(0, 0);
        //清屏
        qingping();
       }
       else
       {
        this.Close();
       }
      }
     }
    }
    //子弹上升
    if (item.Tag.ToString() == "bullet")
    {
     item.Top -= 10;
     //超出上边界清除
     if (item.Top==-item.Top)
     {
      item.Dispose();
     }
     //重新遍历
     foreach (Control letter in Gamearea.Controls)
     {
      //找到字母
      if (letter.Tag.ToString() == "bj")
      {
       //判断字母与子弹相遇
       if (item.Top <= letter.Top + letter.Height && item.Left + item.Width / 2 == letter.Left + letter.Width / 2)
       {
        item.Dispose();
        letter.Dispose();
        //积分自加
        fen++;
        //写入控制区
        scoring.Text = "积分:" + fen;
        //创造爆炸
        PictureBox detonate = new PictureBox();
        //记录播放图片从零开始
        detonate.Tag = 0;
        //盒子大小
        detonate.Size = new Size(50,50);
        //将图片放进盒子
        detonate.Image = imageList2.Images[0];
        //图片自适应
        detonate.SizeMode = PictureBoxSizeMode.StretchImage;
        //爆炸位置
        detonate.Location = new Point(letter.Left + letter.Width / 2 - detonate.Width / 2, letter.Top + letter.Height / 2 - detonate.Height / 2);
        Gamearea.Controls.Add(detonate);
        //爆炸timer
        Timer zha = new Timer();
        //爆炸图片放进timer
        zha.Tag = detonate;
        zha.Interval = 100;
        zha.Tick += Zha_Tick;
        zha.Start();
       }
      }
     }
    }
    //尾翼动画播放
    wei.Image = imageList3.Images[t];
    t++;
    if (t >= imageList3.Images.Count)
    {
     t = 0;
    }
    weiyi.Image = imageList3.Images[y];
    y++;
    if (y >= imageList3.Images.Count)
    {
     y = 0;
    }
   }
  }

  private void Zha_Tick(object sender, EventArgs e)
  {
   //获取timer
   Timer zha = (Timer)sender;
   //从盒子获取图片集
   PictureBox picture = (PictureBox)zha.Tag;
   //获取imageList2中图片
   picture.Image = imageList2.Images[(int)picture.Tag];
   //图片播放
   picture.Tag = (int)picture.Tag + 1;
   //一组爆炸图播完清除
   if ((int)picture.Tag == 32)
   {
    zha.Dispose();
    picture.Dispose();

   }
  }
  //清屏字母
  private void qingping()
  {
   foreach (Label lazm in zmbox)
   {
    lazm.Dispose();
   }
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#实现简单打字游戏

    本文实例为大家分享了C#实现简单打字游戏的具体代码,供大家参考,具体内容如下 运行效果图如下: 功能:程序运行后,点击开始按钮,窗体中的文本框中出现字母,用户通过键盘输入文本框中字母,窗体显示用时.正确数.错误数和正确率. 按钮:开始.结束.退出. 菜单:设置(开始游戏.结束游戏.退出游戏),查看(正确率.所用时间). 页面: 控件属性: timer1: enabled选择false,Interval设置为5. timer2: enabled选择false,Interval设置为1000. 代码

  • C#实现打字小游戏

    本文实例为大家分享了C#实现打字小游戏的具体代码,供大家参考,具体内容如下 using System; using System.Drawing; using System.Windows.Forms; namespace 打字游戏 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //创建飞机 PictureBox plan = new PictureBox(); Button kai

  • C#实现打字游戏

    本文实例为大家分享了C#实现打字游戏的具体代码,供大家参考,具体内容如下 思路: 1.有一个游戏界面,我用panel作为游戏界面 2.开始生成字母 打字游戏的字母是不断生成的,所以用计时器timer来生成字母 所有生成的字母设置tag方便寻找 3.字母下落 字母下落是一个持续的动作,所以也在计时器里做 在计时器里通过foreach遍历panel中的所有控件,同时通过tag找到字母,让字母下降 4.生成子弹 通过获取键盘事件生成子弹 5.子弹与字母相碰 代码: private void Form1

  • C#实现简单打字小游戏

    本文实例为大家分享了C#实现简单打字小游戏的具体代码,供大家参考,具体内容如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.For

  • 原生js实现的金山打字小游戏(实例代码详解)

    首先先来看一下效果图 如果感兴趣的就来看一下Js源码吧 //计分板 var board = { dom: document.getElementById("score"), maxLost: 3, //最大丢失量 lost: 0, //当前丢失了多少个 score: 0, //当前分数 render: function() { //显示 this.dom.innerHTML = "<p>得分:" + this.score + "</p&g

  • C++实现简单扫雷小游戏

    本文实例为大家分享了C++实现简单扫雷小游戏的具体代码,供大家参考,具体内容如下 头文件Mine_Sweep.h #include <iostream> #include <ctime> #include <cstdlib> #include <algorithm> #include <queue> #include <Windows.h> using namespace std; typedef pair<int, int&g

  • 用C语言实现简单五子棋小游戏

    本文实例为大家分享了C语言实现简单五子棋小游戏的具体代码,供大家参考,具体内容如下 在vs2019创建新项目,然后添加两个源文件test.c和game.c,接着创建一个头文件game.h. test.c: #include "game.h" void game() { char board[ROW][COL]; InitBoard(board, ROW, COL); DisplayBoard(board, ROW, COL); char ret = 0; while (1) { Pla

  • 原生JS面向对象实现打字小游戏

    本文实例为大家分享了JS面向对象实现打字小游戏的具体代码,供大家参考,具体内容如下 Demo介绍 通过键盘点击下落小球所显示的数字,小球刷新再任意位置重新掉落.并且,每五个球后掉落速度加快 小球刷新位置 大小,颜色随机.用面向对象class方法实现 该demo源码可直接使用.赋值到html文件 然后打开就可以使用,可用作学校课设使用 源码 <!DOCTYPE html> <html lang="en"> <head> <meta charset

  • js实现简单拼图小游戏

    本文实例为大家分享了js实现简单拼图小游戏的具体代码,供大家参考,具体内容如下 游戏很简单,拼拼图,鼠标拖动一块去和另一块互换.语言是HTML+js,注释写的有不明白的可以留言问一下. 截图 代码区 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <style type="text/

  • java实现简单五子棋小游戏(2)

    本文实例为大家分享了java实现简单五子棋小游戏游戏的具体代码,供大家参考,具体内容如下 讲解 在第一步实现的基础上,添加游戏结束条件.五子棋游戏中的相同棋子如果同时有五个连接成一条线就说明游戏结束. 代码实现如下: if(count!=0){                 //判断每一行                 for(int j=0;j<11;j++){                     for(int i=0;i<7;i++){                      

  • java实现简单五子棋小游戏(1)

    本文实例为大家分享了java实现简单五子棋小游戏的具体代码,供大家参考,具体内容如下 讲解 五子棋,实际上就是用一个数组来实现的.没有其他很复杂的结构.首先我们制作五子棋,先要有一个棋盘. public void setGraphics(Graphics g){         this.g=g;         for(int i=0;i<11;i++){             g.drawLine(100+Size*i, 100, 100+Size*i, 500);           

  • js实现简单翻牌小游戏

    本文实例为大家分享了js实现简单翻牌小游戏的具体代码,供大家参考,具体内容如下 1.简介 非常简单的一个网络消消乐翻牌小游戏的实现,代码量较少,不过遇到的bug和自行开发的步骤十分有纪念意义. 2.核心代码块 生成随机数列,确定图片随机分布 function getImgIndex(is){    var index = parseInt(Math.random()*8)+1;          if(is[index] < 2){              is[index]++;      

随机推荐