您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 重庆海天软件学院的WINFORM实训项目-疯狂的小鸟
重庆海天软件工程学院微软班第二学期实训项目微软讲师:丁浩1重庆海天软件学院的WINFORM实训项目-疯狂的小鸟重庆海天软件学院第二学期微软4班WINFORM实训项目截图:最近学生们学习了2个月的C#和WINFORM,没有学习数据库。故设计了这样的一个小游戏,基本覆盖了C#语言常用的语法,已经面向对象的基本思想。本实训课程分为8个阶段来实践,效果非常好。故录制成视频分为8个阶段,每个阶段15分钟左右。此游戏开发为在课堂上即兴编写,即兴录制。没有事先准备,故有些地方不是很完美,请见谅!不过,大家可以学习丁老师在完成软件开发中的需求的时候,思考的过程和完整的思路,以及遇到错误如果去调试和解决的方法,这个大家会有收获。下载地址:主要实现思路为:用GDI+在窗体上绘制图形,在主窗体加入了一个Time控件来做游戏循环,不断的绘图。使用的DoubleBuffer技术,屏幕不闪烁。效果还是可以的,但是在面向对象设计这块设计得有点罗嗦了,没有设计好,需要进一步完善。代码展示:[csharp]viewplaincopyprint?1.usingSystem;2.usingSystem.Collections.Generic;重庆海天软件工程学院微软班第二学期实训项目微软讲师:丁浩23.usingSystem.ComponentModel;4.usingSystem.Data;5.usingSystem.Drawing;6.usingSystem.Linq;7.usingSystem.Text;8.usingSystem.Windows.Forms;9.10.namespaceCrazyBird_GDI11.{12.///summary13.///重庆海天软件工程学院微软7班WINFORM实训项目----疯狂的小鸟14.///微软讲师:丁浩Email:dinghao80@qq.comQQ:3711255515.///项目需求:射击游戏16.///实现步骤:1.采用GDI+技术,双缓冲实训精灵的绘制17.///2.绘制背景18.///3.绘制小鸟19.///4.绘制小猪20.///5.绘制子弹21.////summary22.publicpartialclassForm1:Form23.{24.publicForm1()25.{26.InitializeComponent();27.}28.Bitmapbitmap;29.Pigpig;30.//第七步431.ListBulletbullets=newListBullet();32.BirdOPbirdop;33.//第十步6:当子弹碰到小鸟的开关34.boolisTouched=false;35.privatevoidtimer1_Tick(objectsender,EventArgse)36.{37.//在time控件中循环绘制,约33帧的FPS重庆海天软件工程学院微软班第二学期实训项目微软讲师:丁浩338.//第一步:导入所需资源39.//第二步:搭建双缓冲模型,将资源不断的绘制在虚拟画布上面,这个技术可以消除屏幕闪烁40.//最后将虚拟画布bitmap的内容复制在窗体绘图区41.42.using(Graphicsdc=Graphics.FromImage(bitmap))43.{44.//第三步:导入背景图片资源45.BackGroundbg=newBackGround(this.Width,this.Height);46.bg.Draw(dc);47.//固定窗体不能拖动48.49.//**-------//第一阶段完成。思考:BackGround设计成了一个类,为什么?好处在哪儿?-------------------------------------------------------------------------------------------50.//第四步:绘制小鸟需求一共64只小鸟,成8*8排列设计小鸟类51.52.//第九步6:绘制小鸟53.birdop.Draw(dc);//之前要装载小鸟54.55.56.57.//**------//第二阶段完成。-----------------------------------------------------------------------------------------------58.//第五步:绘制小猪59.60.pig.Width=70;61.pig.Height=60;62.63.pig.Draw(this,dc);64.重庆海天软件工程学院微软班第二学期实训项目微软讲师:丁浩465.//**------//第三阶段完成----------------------------------------------------------------------------------------------66.//第六步:移动小猪67.//触发键盘事件:注意思考,事件源是什么?----窗体68.69.//第七步6:绘制子弹70.foreach(Bulletbulletinbullets)71.{72.//第八步2:让speed值增加,现在找个地方赋予speed初始值73.//bullet.Speed+=10;//没有起到作用74.bullet.X-=bullet.Speed;75.bullet.Draw(dc);76.}77.//***----------第六阶段完成(让子弹飞)------------------下一阶段:子弹碰撞小鸟,子弹和小鸟移除集合-------------------------------------------------------------------78.//思考:子弹碰撞小鸟,只需要在time控件中从小鸟集合中绘制,子弹从子弹集合里面绘制。碰撞后,从各种集合移除小鸟或子弹即可。79.80.//第十步1:判断子弹和小鸟相撞,实际上就是2个矩形相交。追加子弹的方法。81.82.//第十步5:83.for(inti=0;ibullets.Count;i++)//遍历子弹,注意这个时候不能用foreach,为什么?84.{85.for(intj=0;jBirdOP.birds.Count;j++)//遍历小鸟86.{87.if(bullets[i].Intersect(BirdOP.birds[j]))//每一个子弹去判断所有的小鸟碰撞88.{89.BirdOP.birds.RemoveAt(j);//移除小鸟测试成功但是同时要移除子弹重庆海天软件工程学院微软班第二学期实训项目微软讲师:丁浩590.isTouched=true;91.}92.}93.//移除子弹94.if(isTouched)95.{96.bullets.RemoveAt(i);97.isTouched=false;98.}99.//测试成功100.//**-----------------第八阶段完成到这儿就结束了思考加入声音,由于机房没有音响,不好测试。----------------------------------------------------------------------------------------101.//我们发现在构造BirdBackGroundPig等到类的时候,发现都有共同的属性,这个时候可以用继承来实现,需要进一步改进,还要有更好的扩展性,大家在学习面向对象的时候102.//要积极思考面向对象的三大特性,封装继承多态接口抽象类结构枚举等等C#的特性103.//实训制作人:丁浩老师QQ:37112555这个视频会放在中下载,欢迎大家学习,谢谢!重庆海天软件工程学院104.105.}106.107.}108.//第二步:复制绘制在窗体绘图区109.using(Graphicsg=this.CreateGraphics())110.{111.g.DrawImage(bitmap,0,0);112.}113.}114.115.privatevoidForm1_Load(objectsender,EventArgse)116.{117.//第二步:创建和窗体一样大小的画布重庆海天软件工程学院微软班第二学期实训项目微软讲师:丁浩6118.bitmap=newBitmap(this.Width,this.Height);119.//初始化小猪120.pig=newPig();121.pig.Step=10;122.//第九步5:初始化小鸟123.//bird=newBird();124.//bird.LoadBird();125.//做到这个地方,我们发现在bird设计中出现了问题。需要重新设计,没有思考全面。126.birdop=newBirdOP();127.//第九步5:初始化小鸟128.birdop.LoadBirds();129.}130.131.//第六步触发键盘事件移动小猪132.privatevoidForm1_KeyUp(objectsender,KeyEventArgse)133.{134.switch(e.KeyCode)135.{136.caseKeys.Up:137.pig.Move(Direct.UP);138.break;139.caseKeys.Down:140.pig.Move(Direct.DOWN);141.break;142.caseKeys.Space:143.//第七步5:装载子弹在集合中144.bullets.Add(pig.FireABullet());145.break;146.147.}148.}149.//**-----------第四阶段完成--------------------------------------------150.}重庆海天软件工程学院微软班第二学期实训项目微软讲师:丁浩7151.}}}//**-----------第四阶段}}背景类:[csharp]viewplaincopyprint?1.usingSystem;2.usingSystem.Collections.Generic;3.usingSystem.Linq;4.usingSystem.Text;5.usingSystem.Drawing;6.7.namespaceCrazyBird_GDI8.{9.classBackGround10.{11.publicBackGround(intwidth,intheight)12.{13.Width=width;14.Height=height;15.}16.intwidth;17.18.publicintWidth19.{20.get{returnwidth;}21.set{width=value;}22.}23.intheight;24.25.publicintHeight26.{重庆海天软件工程学院微软班第二学期实训项目微软讲师:丁浩827.get{returnheight;}28.set{height=value;}29.}30.31.//绘制一个背景图片32.publicvoidDraw(Graphicsg)33.{34.Rectanglerect=newRectangle(0,0,Width,Height);35.g.DrawImage(MyRes.background,rect);36.}37.}38.}usingSystem;usingSystem.Collections.GenerusingSystem.Linq;usingSystem.Text;usingSystem.Drawing;小鸟类:[csharp]viewplaincopyprint?1.usingSystem;2.usingSystem.Coll
本文标题:重庆海天软件学院的WINFORM实训项目-疯狂的小鸟
链接地址:https://www.777doc.com/doc-3855472 .html