ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:16.40KB ,
资源ID:10529978      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10529978.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(扫雷游戏代码.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

扫雷游戏代码.docx

1、扫雷游戏代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Mine public partial class Form1 : Form public Form1() InitializeComponent(); private Button, Mines; private int XNum=8; /一行方块的

2、数目 private int YNum=9; /一列方块的数目 private int MineNum = 10; /雷的总数 private int, Turn; /=-1 表示这个位置已经翻开; /=0 表示这个位置没有翻开; /=1 表示这个位置插上红旗; private int CostTime = 0; /所用时间 private int RestMine = 10; /剩余的雷数 private int MineWidth = 30; /雷方块的大小(宽度为30像素) private void Form1_Load(object sender, EventArgs e) Turn

3、= new intXNum, YNum; Mines = new ButtonXNum, YNum; for (int x = 0; x XNum; x += 1) for (int y = 0; y YNum; y += 1) Minesx, y = new Button(); this.Controls.Add(Minesx, y); Minesx, y.Left = 10 + MineWidth * x; Minesx, y.Top = 50 + MineWidth * y; Minesx, y.Width = MineWidth; Minesx, y.Height = MineWidt

4、h; Minesx, y.Font = new Font(宋体, 10.5F, FontStyle.Bold, GraphicsUnit.Point, (byte)(134); Minesx, y.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; Minesx, y.Name = Mines + (x + y * XNum).ToString(); Minesx, y.MouseUp += new MouseEventHandler(bt_MouseUp); Minesx, y.Visible = false;

5、private void GameInit()/游戏初始化 for (int x = 0; x XNum; x += 1) for (int y = 0; y YNum; y += 1) Minesx, y.Text = ; Minesx, y.Visible = true; Minesx, y.Enabled = true; Minesx, y.Tag = null; Minesx, y.BackgroundImage = null; Turnx, y = 0; LayMines(); / / 布雷 / private void LayMines() int x,y; Random s =

6、new Random(); /取随机数 for (int i = 0; i MineNum; ) /取随机数 x = s.Next(XNum) ; y = s.Next(YNum) ; if (Convert.ToInt16(Minesx,y.Tag)!= 1) /=1时,代表这个位置是地雷 Minesx, y.Tag = 1;/修改属性为雷 /Minesx, y.Text = u; i+; / / 获取某个小方块区域相邻8个区域的雷个数 / private int GetAroundNum(int row,int col) int i, j; int around = 0; int minR

7、ow = (row = 0) ? 0 : row - 1; int maxRow = row + 2; int minCol = (col = 0) ? 0 : col - 1; int maxCol = col + 2; for (i = minRow; i maxRow; i+) for (j = minCol; j = 0 & row = 0 & col YNum); / /雷方块拓展(对于周围无雷的空白区域) / private void ExpandMines(int row, int col) int i, j; int minRow = (row = 0) ? 0 : row -

8、 1; int maxRow = row + 2; int minCol = (col = 0) ? 0 : col - 1; int maxCol = col + 2; int around = GetAroundNum(row, col); /对周围一个雷都没有的空白区域拓展 if (around = 0) Minesrow,col.Enabled = false; for (i = minRow; i maxRow; i+) for (j = minCol; j maxCol; j+) /对于周围可以拓展的区域进行的规拓展 if (!IsInMineArea(i, j) continue

9、; if (!(i = row & j = col) & Minesi, j.Enabled != false) /& Convert.ToInt16(Minesi,j.Tag)!= 1 ExpandMines(i, j); Minesi, j.Enabled = false;/周围无雷的区域按钮无效 if (GetAroundNum(i,j) != 0) /周围无雷*6-28 Minesi, j.Text = GetAroundNum(i, j).ToString(); / / 胜利判断并处理 / private bool Victory()/ 检测是否胜利 for (int i = 0;

10、i XNum; i+) for (int j = 0; j YNum; j+) /没翻开且未标示,则未成功 if (Minesi, j.Enabled= true&Turni, j != 1) return false; /不是雷却误标示为雷,则也未成功 if (Convert.ToInt16(Minesi, j.Tag) != 1 & Turni, j = 1) return false; return true ; /添加按钮控件Click事件与处理方法bt_Click: private void bt_MouseUp(object sender, MouseEventArgs e) /这

11、里处理事件方法 String btName; Button bClick=(Button)sender;/将被击的按钮赋给定义的bClick变量 btName = bClick.Name;/获取按钮的Name int n=Convert.ToInt16 (btName.Substring(5); int x = n % XNum; int y = n / XNum; /通过按钮Name属性来判断是哪个Button被点击,并执行相应的操作 switch (e.Button) case MouseButtons.Left: if (Convert.ToInt16(Minesx, y.Tag) !=

12、 1)/不是雷 Minesx, y.BackgroundImage = null; Minesx, y.Text = GetAroundNum(x, y).ToString(); Minesx, y.Enabled = false; ExpandMines(x, y);/完成无雷拓展 if (Victory() / 判断是否胜利,是则将地图中所有雷标识出来 show(); MessageBox.Show(胜利!, 结束); timer1.Enabled = false;/停止计时 else/触雷 Minesx, y.BackgroundImage = Image.FromFile(mine1.

13、bmp); MessageBox.Show(失败!, 结束); timer1.Enabled = false;/停止计时 show();/将地图中所有雷标识出来 break; case MouseButtons.Right: Minesx, y.BackgroundImage = Image.FromFile(flag.bmp); if (Turnx, y = 1)/表示这个位置插上红旗 Turnx, y = 0;/取消红旗,表示这个位置没有翻开 RestMine+; Minesx, y.BackgroundImage = null; else Turnx, y = 1;/表示这个位置插上红旗

14、 RestMine-; lblMine.Text = RestMine.ToString(); if (Victory() MessageBox.Show(胜利!, 结束); timer1.Enabled = false;/停止计时 break; private void show()/将地图中所有雷标识出来 for (int i = 0; i XNum; i+) for (int j = 0; j YNum; j+) if (Convert.ToInt16(Minesi, j.Tag) = 1) /=1时,代表这个位置是地雷 Minesi, j.BackgroundImage = Image

15、.FromFile(mine.bmp); private void btnStart_Click(object sender, EventArgs e) GameInit();/游戏初始化 timer1.Enabled = true; private void timer1_Tick(object sender, EventArgs e) CostTime+; lblTime.Text = CostTime.ToString();/ 用时: + CostTime.ToString() + 秒; private void button2_Click(object sender, EventArgs e) show();/将地图中所有雷标识出来

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1