已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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;using System.Collections;using System.IO;namespace snack public partial class Form1 : Form /判断游戏是否开始的标志 bool play = false; /判断游戏是否暂停的标志 int pause; /定义一个判断 开始/重新开始状态的整形变量 int start=0; /定义一个判断 游戏是否升级的标志 int sj = 0; bool fooddraw = false; food food1=new food(); snack snack1 = new snack(4); public Form1() InitializeComponent(); button2.Enabled = false; button3.Enabled = false; /在pictureBox中的游戏背景设置 public void DrawGameFrame(Graphics g) for(int i=0;ithis.pictureBox1.Width;i+=10) for (int j = 0; j this.pictureBox1.Height;j+=10) g.FillEllipse(Brushes.LightPink,i,j,10,10); /蛇的定义 class snack public Point startPoint = new Point(10, 10); Point addPoint; /创建一个数组用来存放蛇的身体 public static ArrayList snackPoint = new ArrayList(); Point headPoint; /获取蛇头坐标 public Point HeadPoint get return headPoint; set headPoint = value; /初始化蛇的方向向右 int direction =1; public int Direction get return direction; set direction = value; /蛇的构造器 public snack(int lenth) for (int i = 0; i lenth; i+) snackPoint.Add(startPoint); if (i = lenth-1) HeadPoint = startPoint; return; startPoint = new Point(startPoint.X + 10, startPoint.Y); /画蛇函数 public void DrawSnack(Graphics g) for (int i =0; i snackPoint.Count; i+) g.FillEllipse(Brushes.Black,(Point)snackPointi).X,(Point)snackPointi).Y,10,10); /添加一节蛇 public void Addscnak() /蛇此刻的方向是向右的 if (direction = 1) addPoint = new Point(headPoint.X +10, headPoint.Y); /蛇此刻的方向是向左的 else if (direction = 2) addPoint = new Point(headPoint.X - 10, headPoint.Y); /蛇此刻的方向是向上的 else if (direction = 3) addPoint = new Point(headPoint.X, headPoint.Y - 10); /蛇此刻的方向是向下的 else if (direction = 4) addPoint = new Point(headPoint.X, headPoint.Y + 10); /把新加的一节蛇身加到蛇自身定义的数组里面 snackPoint.Add(addPoint); /并重新定义蛇头坐标 headPoint = addPoint; /在蛇移动过程中,去掉蛇尾 public void RemoveSnackNode() snackPoint.RemoveAt(0); /蛇移动函数 public void snackRemove(Graphics g) DrawSnack(g); RemoveSnackNode(); /判断蛇是否死亡 public bool Die() /判断蛇是否撞到自己 for (int i = 0; i snackPoint.Count - 1; i+) if (Point)snackPointi = headPoint) return true; /判断是否撞到墙 if (headPoint.X 430 | headPoint.Y 400) return true; return false; /添加食物类 class food Point foodPoint = new Point(); /食物坐标的构造器 public Point FoodPoint get return foodPoint; set foodPoint = value; /构建随机的食物点 public void GetFoodPoint() /随机产生食物 Random random = new Random(); int x = random.Next(1, 33) * 10; int y = random.Next(2, 33) * 10; foodPoint = new Point(x, y); /判断食物是否出现在蛇身上 for (int i = 0; i =100 & sj=0) sj = 1; this.timer1.Interval = 200; this.timer1.Enabled = false; MessageBox.Show(恭喜你,你顺利通过了菜鸟训练,下面进入老鸟级别,你准备好了吗?); this.timer1.Enabled = true; 菜鸟ToolStripMenuItem.Checked = false; 老鸟ToolStripMenuItem.Checked = true; 自虐ToolStripMenuItem.Checked = false; if (Convert.ToInt32(this.label2.Text) =200 & sj = 1) sj = 2; this.timer1.Interval = 100; this.timer2分数级别控制.Enabled = false; this.timer1.Enabled = false; MessageBox.Show(你太厉害了,下面是自虐级别,你准备好接受挑战了吗?); this.timer1.Enabled = true; 菜鸟ToolStripMenuItem.Checked = false; 老鸟ToolStripMenuItem.Checked = false; 自虐ToolStripMenuItem.Checked = true; /游戏存档 private void button3_Click(object sender, EventArgs e) this.timer1.Enabled = false; /存盘时保存的数值类型间隔 string kongge = ; string kongge1 = rn; /实例化一个保存文件对话框 SaveFileDialog sf = new SaveFileDialog(); /设置文件保存类型 sf.Filter = txt文件|*.txt|所有文件|*.*; /如果用户没有输入扩展名,自动追加后缀 sf.AddExtension = true; /设置标题 sf.Title = 游戏存盘功能; byte kongge2 = new UTF8Encoding().GetBytes(kongge); byte kongge3=new UTF8Encoding().GetBytes(kongge1); if (DialogResult.OK = sf.ShowDialog() /实例化一个文件流,与写入文件相关联 FileStream fs = new FileStream(sf.FileName,FileMode.Create); /保存蛇身位置 for (int i = 0; i snack.snackPoint.Count; i+) byte cSnackBodyx = new UTF8Encoding().GetBytes(Point)snack.snackPointi).X.ToString(); byte cSnackBodyy = new UTF8Encoding().GetBytes(Point)snack.snackPointi).Y.ToString(); fs.Write(cSnackBodyx, 0, cSnackBodyx.Length); fs.Write(kongge2, 0, kongge2.Length); fs.Write(cSnackBodyy,0,cSnackBodyy.Length); fs.Write(kongge3, 0, kongge3.Length); /代表蛇身存盘结束 byte point = new UTF8Encoding().GetBytes(over); fs.Write(point, 0, point.Length); fs.Write(kongge3, 0, kongge3.Length); /保存蛇移动方向 byte cDirection = new UTF8Encoding().GetBytes(snack1.Direction.ToString(); fs.Write(cDirection,0,cDirection.Length); fs.Write(kongge2, 0, kongge2.Length); /保存食物坐标 byte cFoodpointx = new UTF8Encoding().GetBytes(food1.FoodPoint.X.ToString(); byte cFoodpointy = new UTF8Encoding().GetBytes(food1.FoodPoint.Y.ToString(); fs.Write(cFoodpointx,0,cFoodpointx.Length); fs.Write(kongge2,0,kongge2.Length); fs.Write(cFoodpointy, 0, cFoodpointy.Length); fs.Write(kongge2, 0, kongge2.Length); /保存分数 byte cScore = new UTF8Encoding().GetBytes(this.label2.Text.ToString(); fs.Write(cScore, 0, cScore.Length); fs.Write(kongge2, 0, kongge2.Length); /保存游戏级别 byte cSj = new UTF8Encoding().GetBytes(sj.ToString(); fs.Write(cSj,0,cSj.Length); fs.Write(kongge2, 0, kongge2.Length); this.button5.Enabled = true; /清除缓冲区、关闭流 fs.Flush(); fs.Close(); if (DialogResult.Yes = MessageBox.Show(存档后你是否继续游戏, 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Information) this.timer1.Enabled = true; else MessageBox.Show(玩家退出游戏,欢迎下次继续迎接挑战!); this.Close(); else MessageBox.Show(尊敬的玩家,你放弃了本次游戏保存); this.timer1.Enabled = true; /游戏读档模块儿 private void button5_Click(object sender, EventArgs e) if (play) this.timer1.Enabled = false; if (DialogResult.Yes = MessageBox.Show(你是否要进行游戏读档,如果是的话,会覆盖当前游戏,你还要继续吗?, 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Information) this.timer1.Enabled = false; button4.Enabled = true; button5.Enabled = false; /打开文件对话框 OpenFileDialog of = new OpenFileDialog(); /设置文件类型 of.Filter = txt文件|*.txt|所有文件|*.*; /如果用户没有输入扩展名,自动添加后缀 of.AddExtension = true; /设置标题 of.Title = 游戏读档; if (DialogResult.OK = of.ShowDialog() pictureBox1.Invalidate(); snack.snackPoint.Clear(); StreamReader read1 = new StreamReader(of.FileName); String duqu = new String2; string duqu1 = new string5; String snack11; string ss; Point startPoint = new Point(); Point foodPoint = new Point(); snack11 = read1.ReadLine(); while (snack11 != over) duqu = snack11.Split( ); startPoint.X = int.Parse(duqu0); startPoint.Y = int.Parse(duqu1); snack.snackPoint.Add(startPoint); snack1.HeadPoint = startPoint; snack11 = read1.ReadLine(); ss = read1.ReadLine(); duqu1 = ss.Split( ); snack1.Direction = int.Parse(duqu10); t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论