C_Sharp 板


LINE

小弟我最近想要写一个踩地雷的程式(win8.1都不内建了QQ) ,但是目前卡在自动翻开的部分 ,有先爬过文,看到上面有人推荐适用flodfill演算法来完成 ,我也Google过并且试图写过,但是还是一直出错 ,只好上来求助了 以下为程式码 namespace test_3 { class Class2 { string bomb = "B"; Random ram = new Random();//呼叫ramdon方法 public string[,] output; public int[,] a; 先建立一个类别用来产生炸弹(纯粹因为感觉主程式才不会太乱) public void addbomb(int len, int wid, int bombnum) //建立一个用来放置地雷的阵列方法 { this.a = new int[len, wid];//阵列宣告 this.output = new string[len, wid]; int i, j; for (i = 0; i < len; i++)//将阵列值归零 { for (j = 0; j < wid; j++) { a[i, j] = 0; output[i, j] = null; } } //a[1, 1] = 9;test if (len * wid < bombnum)//如果炸弹数比格子多时 bombnum = bombnum - 10; for (int con = 0; con < bombnum; con++)//随机放置炸弹(9是炸弹) a[ram.Next(0, len), ram.Next(0, wid)] = 9; for (i = 0; i < len; i++)//检查炸弹旁边的九宫格 { for (j = 0; j < wid; j++) { if (a[i, j] == 9)//遇到炸弹,九宫格加一 { for (int k = -1; k <= 1; k++) { for (int m = -1; m <= 1; m++) { if (i + k >= 0 && j + m >= 0 && i + k < len && j + m < wid) { a[i + k, j + m]++; if (a[i + k, j + m] == 10) a[i + k, j + m] = 9; } } } } } } 建立一个用来存放炸弹的阵列 for (i = 0; i < len; i++) { for (j = 0; j < wid; j++) { output[i, j] = Convert.ToString(a[i, j]); if (output[i, j] == "9") output[i, j] = bomb; } }//检查输出结果 } } } 将矩阵的存取型态变成string ----------------------------------------------------- 主程式 namespace test_3 { public partial class Form1 : Form { Class2 add = new Class2();//呼叫类别 Button[,] btn = new Button[10,10];//动态建立按钮 int a, b; public Timer tim = new System.Windows.Forms.Timer(); public Form1() { InitializeComponent(); } Timer还没有用到 private void Form1_Load(object sender, EventArgs e) { add.addbomb(10, 10, 10);//存入炸弹 //调整按钮外观位置 for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { btn[i, j] = new Button(); btn[i, j].Height = 40; btn[i, j].Width = 40; btn[i, j].Name = add.output[i, j];//将炸弹存入name里面 this.Controls.Add(btn[i,j]); btn[i, j].Location = new Point(50+38*i, 50+38*j); btn[i, j].Click += new EventHandler(Buttons_Click); } } } 这边想请问除了把炸弹阵列存在button.name里面还有更好的做法吗 void Buttons_Click(object sender, EventArgs e) { Button button = (Button)sender; int i = 0, j = 0, flag = 0; button.Text = button.Name; button.Enabled = false; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { if (btn[i, j].Text == button.Text) { flag++; break; } } if (flag == 1) break; } //flood_fill(i,j); } 按钮按下後的事件,另外想请教一下sender到底是干嘛用的 上网查过还是一样不太知道它的作用 void flood_fill(int x, int y) { if (btn[x, y].Name == "0" && x > 0 && x < 9 && y > 0 && y < 9) { btn[x, y].Enabled = false; btn[x, y].Text = null; flood_fill(x - 1, y - 1); flood_fill(x - 1, y); flood_fill(x - 1, y + 1); flood_fill(x, y + 1); flood_fill(x, y - 1); flood_fill(x + 1, y); flood_fill(x + 1, y - 1); flood_fill(x + 1, y + 1); } } } } 当按钮按到button.name为0的时候 搜寻九宫格内button.name为0的按纽 不知道这样写出了甚麽问题 执行时只要一按到空白的就一直出错 真的不知道要怎麽进行下去只好求助了QQ -- 试证 色即是空 〈pf〉 由欧姆定律V=IR 左右同时乘以"A" 得 AV=AIR 得证 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.12.244.130
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1483891621.A.3E6.html ※ 编辑: lazcat (101.12.244.130), 01/09/2017 00:14:57
1F:推 GoalBased: https://github.com/ 放上github比较容易看 01/09 01:16
2F:→ lazcat: https://goo.gl/j0d8Pu 小弟我算是初学者,不太会用github 01/09 02:13
我找到出错的地方,在flood_fill那边没有将btn.name改掉导致会出现无限回圈,放上来问之後就想通了orz ※ 编辑: lazcat (101.12.244.130), 01/09/2017 11:11:49







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP