简单的java游戏代码详细解析⽤C#写的⼩游戏《彩⾊连珠》(附源代码)
不久前写的⼀个⼩游戏,最近拿出来稍微修改完善了⼀下,因为⾃⼰现在“不得已”改⾏学Java了,这个⼩游戏就当是⾃⼰与C#的告别吧,不过以后如果⾃⼰有什么想写的⼩程序,C#仍然是⾸先考虑的语⾔了,因为Java做GUI太蛋疼了。
⾸先声明本⼈菜鸟⼀个,快毕业的学⽣党,这篇⽂章完全是记录⾃⼰的⼀些点滴吧。
游戏的规则很简单,⼤概是:10X10的⽅格,游戏开始时随机出5个球,颜⾊也是随机的,⽤户点击球让其移动,5个(或更多)相同颜⾊的球在⼀起就可以消掉,如果没有可以消的,就⼜随机出3个球,直到棋盘满为⽌。
游戏界⾯如下:
具体思路如下:
左边的是⼀个panel⾯板,⽤来当做棋盘,启动时把⽅格线画好,这些球都是⼀些事先弄好的图⽚⽂件(考虑过⽤图形学的⽅法代码⽣成,但是感觉效率太低,最重要的是不好看,所以还是放弃了),通过g.DrawImage()的⽅法画在⾯板上,清空的话就是⽤背景⾊填充,点击某个球会动态的变化⼤⼩,点击空⽩处会将之前点过的球动态的移动到那⾥,球每次移动时需要查能够到达指定位置的最短路径,所以会⽤到《⼈⼯智能》课上⽤过的查算法查最短路径,出⼦就是⽤Random随机函数随机的在某个位置画某种颜⾊的球,每次移动球后都要判断在横、竖、左斜、右斜四个⽅向上是否有可以消的球,消完球后随机出3个球,出球的同时要判断棋盘是否满。
简单的实现了保存成绩的功能(以及对成绩进⾏加密),功能做的很简陋,其实还可以添加⼀些声⾳的,限于时间就没弄了,有兴趣的可以尝试⼀下。
好了,也不多写什么了,因为我觉得代码⾥⾯的注释已经够详细了,更多的问题还是看代码⾥⾯的注释吧。
下⾯把⼏个⽐较重要的地⽅单独写出来。
⾸先最重要的是画图要怎么画,也就是采⽤什么函数来画。
C#画图最常见的⼀般有3种⽅式:
⼀种是,这种⽅法优点是窗体最⼩化或者被其它窗体遮挡后画的图不会消失,缺点是每次画完图都要刷新整个区域,所以有可能闪屏很严重:
Bitmap bit = new Bitmap(panel游戏区.Width,panel游戏区.Height);//实例化⼀个Bitmap
Graphics g = Graphics.FromImage(bit);
g.DrawImage(Image.FromFile("picturePath"),left,top,width,height);//画图
panel游戏区.BackgroundImage = bit;
还有⼀种是⽤控件的CreateGraphics()⽅法创建⼀个Graphic对象,优点很明显,就是⾮常⽅便,不⽤每次都要刷新,所以⼀般不会出现闪屏现象,但是当窗体最⼩化还原或者被其它窗体遮挡后就⼀⽚空⽩了,到⽹上查过⼀些资料,好像是因为这种画图⽅式数据都是保存在缓存中的,窗体只要最⼩化就
会触发paint事件重绘,系统⾃带的控件重绘的代码都写好了,但是我们⾃⼰的这个画图区域因为没有写重绘事件,所以还原后⼀⽚空⽩,解决办法就是在paint事件⾥⼿动对空⽩区域进⾏重绘,本游戏采⽤的就是这种⽅法:
Graphics g = panel游戏区.CreateGraphics();
g.DrawImage(Image.FromFile("picturePath"), left, top, width, height);
还有⼀种⽅法是写在控件的Paint事件⾥,缺点很明显,都是不⽅便,很多代码我们没办法写在这⾥,⽐如⿏标事件发⽣的⼀些画图代码。
Graphics g = e.Graphics;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论