C#课程设计实验报告(共20页).doc
《C#课程设计实验报告(共20页).doc》由会员分享,可在线阅读,更多相关《C#课程设计实验报告(共20页).doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 苏 州 市 职 业 大 学课程设计说明书 名称 计算机语言C#课程设计 弹珠 游戏 2010年 6月 21日至 2010年 7月 4日共2周院 系计算机工程系 班 级 09软件测试 姓 名 罗苑() 系主任 李 金 祥 教研室主任 叶 良 指导教师 张 苏 王德鹏 摘要:这个小程序是关于弹珠的小游戏,游戏比较简单,以小球的速度来区分游戏的难易。该小程序是用左右键控制游戏的开始和挡板的方向,不让小球落到底端,当然,小球的速度越快,该游戏的难度也就越大。此程序利用C#程序编写,在visual studio 2005的环境下进行调试运行的。弹珠原理:碰撞基本都是参照“反射
2、定理”的,就是出射角=入射角,但是做碰撞时需要角度。碰撞的运动和球的方向有关,球的方向有好几种。有8向的,也有4向的。保证小球横向上在允许范围之内运动,当触发时就反方向运动,和当出了球拍的可击打范围就停止运行了。对于该程序开发,必须达到以下要求:1、熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。2、掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。3、掌握常用控件以及控件的常用属性的使用方法。4、界面要做到简洁易懂,具有人性化等特点。5、程序没有在使用过程中不存在任何的问题。6、可选功能应全面,可以实施速度的选择
3、,游戏的是否继续,还有记录的保存。目 录一、 题目说明当今用简单的代码编写的小游戏越来越受人们的欢迎,所以对于小游戏的开发也成为了各大编程人士的最爱。我选择弹珠游戏这个课题,用代码控制游戏的等级,运用不同的函数来控制球的速度和方向,游戏简单而有趣。二、总体设计2.1系统开发平台系统采用Microsoft Visual Studio 2005三、详细说明 在此弹球游戏中,对于球与挡板的位置,借助于x与y坐标的调整来实现统计,从而确定球落在板上后球的下一次方向。同时借助于Visual Studio中的控件来控制小球的速度。此项游戏的计分运用函数count+,打中一个砖块即可得到一分,看你最多能打多
4、少砖块。.1系统实施 timer1.Interval = dlg.Speed; protected override void Dispose( bool disposing )if( disposing )if (components != null) components.Dispose();base.Dispose( disposing ); private string m_strCurrentSoundFile = BallOut.wav; public void PlayASound() if (m_strCurrentSoundFile.Length 0) m_strCurren
5、tSoundFile = ; oThread.Abort(); public void PlaySoundInThread(string wavefile) m_strCurrentSoundFile = wavefile; oThread = new Thread(new ThreadStart(PlayASound); oThread.Start(); #region Windows Form Designer generated codeprivate void InitializeComponent() ponents = new System.ComponentModel.Conta
6、iner(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1); this.timer1 = new System.Windows.Forms.Timer(ponents); this.SuspendLayout(); this.timer1.Tick += new System.EventHandler(this.timer1_Tick); this.AutoScaleBaseSize = ne
7、w System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(552, 389); this.Icon = (System.Drawing.Icon)(resources.GetObject($this.Icon); this.KeyPreview = true; this.Name = Form1; this.Text = 打砖块; this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint); this.KeyDown +
8、= new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); #endregionSTAThreadstatic void Main() Application.Run(new Form1(); private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) Graphics
9、g = e.Graphics; g.FillRectangle(Brushes.White, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height); TheScore.Draw(g); ThePaddle.Draw(g); DrawRows(g); TheBall.Draw(g); private void DrawRows(Graphics g) for (int i = 0; i kNumberOfRows; i+) Rowsi.Draw(g); private void CheckForCollision() if
10、(TheBall.Position.X 0) TheBall.XStep *= -1; TheBall.Position.X += TheBall.XStep; PlaySoundInThread(WallHit.wav); if (TheBall.Position.Y this.ClientRectangle.Right - TheBall.Width ) TheBall.XStep *= -1; TheBall.Position.X += TheBall.XStep; PlaySoundInThread(WallHit.wav); if (TheBall.Position.Y this.C
11、lientRectangle.Bottom - TheBall.YStep) IncrementGameBalls(); Reset(); PlaySoundInThread(BallOut.wav); if (RowsCollide(TheBall.Position) TheBall.YStep *= -1; PlaySoundInThread(BrickHit.wav); int hp = HitsPaddle(TheBall.Position); if (hp -1) PlaySoundInThread(PaddleHit.wav); switch (hp) case 1: TheBal
12、l.XStep = -7; TheBall.YStep = -3; break; case 2: TheBall.XStep = -5; TheBall.YStep = -5; break; case 3: TheBall.XStep = 5; TheBall.YStep = -5; break; default: TheBall.XStep = 7; TheBall.YStep = -3; break; private int HitsPaddle(Point p) Rectangle PaddleRect = ThePaddle.GetBounds(); if (p.Y = this.Cl
13、ientRectangle.Bottom - (PaddleRect.Height + TheBall.Height) ) if (p.X PaddleRect.Left) & (p.X PaddleRect.Left) & (p.X PaddleRect.Left + PaddleRect.Width/4) & (p.X PaddleRect.Left + PaddleRect.Width/2) & (p.X = kNumberOfTries) timer1.Stop(); string msg = 游戏结束,您一共打了 + NumTotalBricks; if (NumTotalBrick
14、s = 1) msg += brick.; else msg += bricks. + 继续努力哦!; MessageBox.Show(msg); Application.Exit(); private void Reset() TheBall.XStep = 5; TheBall.YStep = 5; TheBall.Position.Y = this.ClientRectangle.Bottom - 190; TheBall.Position.X = 5; timer1.Stop(); TheBall.UpdateBounds(); Invalidate(TheBall.GetBounds
15、(); private int SumBricks () int sum = 0; for (int i = 0; i kNumberOfRows; i+) sum += Rowsi.BrickOut; return sum; private bool RowsCollide (Point p) for (int i = 0; i kNumberOfRows; i+) if (Rowsi.Collides(TheBall.GetBounds() Rectangle rRow = Rowsi.GetBounds(); Invalidate(rRow); return true; return f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 课程设计 实验 报告 20
限制150内