这篇文章主要为大家详细介绍了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();
}
}
}
}
更多有趣的经典小游戏实现专题,也分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏 玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持得得之家。
沃梦达教程
本文标题为:C#实现简单打字小游戏
基础教程推荐
猜你喜欢
- 一个读写csv文件的C#类 2022-11-06
- C#控制台实现飞行棋小游戏 2023-04-22
- ZooKeeper的安装及部署教程 2023-01-22
- winform把Office转成PDF文件 2023-06-14
- C# windows语音识别与朗读实例 2023-04-27
- unity实现动态排行榜 2023-04-27
- C# 调用WebService的方法 2023-03-09
- C# List实现行转列的通用方案 2022-11-02
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26
- C#类和结构详解 2023-05-30