C#实现简单打字小游戏
作者:oOo!!!!!----蔚楠 时间:2023-02-25 06:46:50
本文实例为大家分享了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经典小游戏汇总
来源:https://blog.csdn.net/weixin_45105458/article/details/103241880
标签:C#,打字
0
投稿
猜你喜欢
JavaWeb Servlet生命周期细枝末节处深究
2023-08-25 22:48:23
什么是递归?用Java写一个简单的递归程序
2022-02-11 19:39:45
Java中实现可拖放图片剪裁入门教程
2022-04-23 12:11:03
Java中的static关键字你了解多少
2022-05-21 11:25:51
android通过google api获取天气信息示例
2023-10-18 15:44:22
WPF实现倒计时转场动画效果
2023-01-10 11:46:23
Java编程Webservice指定超时时间代码详解
2023-11-02 23:17:12
Activiti常用类简介
2021-07-02 21:58:13
详解Spring 中 Bean 的生命周期
2023-09-13 14:55:57
Android线程管理之ActivityThread
2022-05-08 07:48:35
C#实现带阴历显示的日期代码
2023-12-11 02:19:04
java 中newInstance()方法和new关键字的区别
2023-11-25 07:17:26
如何在C#中集成Lua脚本
2021-12-24 23:24:35
Java毕业设计实战之共享租车信息管理系统的实现
2022-08-02 13:37:32
Android手势识别器GestureDetector使用详解
2022-01-16 14:25:17
C#生成二维码的方法
2021-11-11 02:49:21
解决ThingsBoard编译报错问题:Failure to find org.gradle:gradle-tooling-api:jar:6.3
2021-11-20 16:24:22
Unity Shader实现新手引导遮罩镂空效果
2022-08-18 16:25:12
Unity3d实现无限循环滚动背景
2022-11-02 05:04:22
Java枚举类型enum的详解及使用
2023-08-02 14:23:57