C专业课程设计打砖块.doc
《C专业课程设计打砖块.doc》由会员分享,可在线阅读,更多相关《C专业课程设计打砖块.doc(22页珍藏版)》请在咨信网上搜索。
辽 宁 工 业 大 学 C#.NET程序设计 课程设计(汇报) 题目: 打砖块游戏 院 (系): 软件学院 专业班级: 计算机信息管理101班 学 号: 学生姓名: 姜洪亮 指导老师: 胡 峰 老师职称: 助 教 起止时间:.11.21至.12.02 程序设计专题(汇报)任务及评语 院(系):软件学院 教研室:软件教研窒 学 号 学生姓名 姜洪亮 专业班级 计算机信息管理101班 程序设计(汇报)题目 打砖块游戏 程序设计(汇报)任务 程序设计专题任务和要求: (1)掌握c#.net编程、面向对象基础知识。 (2)较熟练地编写c#.net windows应用程序。 (3)了解C#.net常见类库、编程技巧、异常处理。 (5)联络已学过内容,巩固所学理论,增强独立工作能力。 (6)经过设计关键使学生有一个独立编写程序过程,对理论学习及动手能力全部有一个很大提升。 (7)经过此次设计,深入培养学生热爱专业思想,同时对本专业综合素质提升起一个主动推进作用。 程序设计过程中,要严格遵守实践步骤时间安排,听从指导老师指导。正确地完成上述内容,统计实习日志,规范完整地撰写出实训汇报。 指导老师评语及成绩 成绩: 指导老师签字: 年 12月 02日 目 录 第1章 程序设计专题目标和要求 1 1.1 程序设计目标 1 1.2 程序设计试验环境 1 1.3 程序设计预备知识 1 1.4 程序设计要求 1 第2章 程序设计内容 2 2.1概要设计 2 2.2程序整体设计说明 2 2.3程序部分源代码及注释 8 2.4测试结果 12 第3章 程序设计总结 13 参考文件 14 第1章 程序设计目标和要求 1.1 程序设计目标 《C#.Net程序设计》是计算机科学和技术专业必修专业基础课程,其实践性、应用性很强。实践教学步骤是必不可少一个关键步骤。本课程程序设计专题实际是软件技术专业学生学习完《C#.Net程序设计》课程后,进行一次全方面综合训练,C#.Net程序设计设计目标是加深对理论教学内容了解和掌握,使学生较系统地掌握程序设计及其在网络开发中广泛应用,基础方法及技巧,为学生综合利用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 1.2 程序设计试验环境 硬件要求能运行Windows xp操作系统微机系统。C#.Net程序设计语言及对应集成开发环境visual 。 1.3 程序设计预备知识 熟悉c#语言及visual 集成开发环境。 1.4 程序设计要求 按程序设计指导书提供课题,要求学生在自行完成各个操作步骤,并能实现且达成举一反三目标,完成一个项目处理一类问题。要求学生能够全方面、深入了解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够很好地了解和掌握,能够进行简单分析和判定;能编写出含有良好风格程序;掌握c#.net基础技能和面向对象概念和方法;了解windows编程。同时培养学生进行分析问题、处理问题能力;培养学生进行设计分析、设计方法、设计操作和测试、设计过程观察、了解和归纳能力提升。 第2章 程序设计内容 2.1程序设计题目 打砖块游戏:作为我们一款熟知游戏我想大家全部不陌生吧,就是经过挡板把小球挡回,不让小球落地,直到打光全部砖块为止,游戏过关进入更难得模式小球速度愈加快,砖块组成图案发生改变,是一个很有趣味小游戏。 2.2程序整体设计说明 2.2.1程序设计内容 1. 需求分析 本系统为一个用C#实现为我们所熟悉简单打砖块游戏,该系统具体功效以下: 1) 能简便开始游戏,游戏中功效和日常我们所熟悉游戏功效一致 ,直到砖块全部打光过关和在砖块打光之前机会用完游戏结束功效; 2) 当游戏结束时会自动弹出消息框提醒本关所取得得分数; 3) 当过关时会出现提醒图片,点击进入下一关,下一关方块位置和所组成形状会发生改变 2 设计环境 本程序选择Visual Studio 作为试验环境。 3. 程序设计内容和思绪 1) 游戏设计游戏开始时,小球会停在挡板正中间,而且此时小球能够伴随挡板左右自由移动,当按下空格键小球弹出,并在程序设定区域中不停碰撞反弹。 2) 当小球碰撞到墙壁、挡板、和砖块时候,均以相同速度反弹,而且砖块被碰撞后会以相同速度反弹,而且当砖块被碰撞后会消失。 3) 挡板能够左右移动以接住小球,若超出三次没有接住,则游戏结束,按退出键退出,当全部砖块全部打光时则出现进入下一关提醒框,点击进入下一关。 2.2.1.1 程序中所用类说明 依据设计思绪,能够为系统设计三个类,实现小球类RussiaBlock继承Object类,主窗体类MainForm类,设置窗体类SettingForm类。 using System; using System.Collections.Generic; using System.Text; using System.Drawing; namespace Arkanoid { class DisposeDAO { /// <summary> /// 处理球碰到砖块后弹方向(上下) /// </summary> /// <param name="bx">砖X坐标</param> /// <param name="by">砖Y坐标</param> /// <param name="bw">砖水平长度</param> /// <param name="bh">砖高度</param> /// <param name="qx">球X坐标</param> /// <param name="qy">球Y坐标</param> /// <param name="qr">球直径</param> /// <returns>返回string类型值</returns> public static string DisposeTopDown(int bx, int by, int bw, int bh, int qx, int qy, int qr) { string Yfangxiang = ""; int f = 0; //方向 if (Math.Abs(by - (qy + qr)) <= 2) { f = 1; //从上碰撞到球 } else if (Math.Abs(qy - (by + bh)) <= 2) { f = 2; //从下碰撞到球 } if (f == 1) { Yfangxiang = "YTop"; } else if (f == 2) { Yfangxiang = "YDown"; } return Yfangxiang; } /// <summary> /// 处理球碰到砖块后弹方向(左右) /// </summary> /// <param name="bx">砖X坐标</param> /// <param name="by">砖Y坐标</param> /// <param name="bw">砖水平长度</param> /// <param name="bh">砖高度</param> /// <param name="qx">球X坐标</param> /// <param name="qy">球Y坐标</param> /// <param name="qr">球直径</param> /// <returns>返回string类型值</returns> /// <summary> /// 处理球碰撞到砖块后动作 /// </summary> /// <param name="point">砖块坐标</param> /// <param name="qx">球X坐标</param> /// <param name="qy">球Y坐标</param> /// <param name="qr">球直径</param> /// <param name="xfangxiang">现在X方向</param> /// <param name="yfangxiang">现在Y方向</param> /// <returns>RreturnDataDbean类型值</returns> public static ReturnDataBean DisposeBrick(Point[] point, int qx, int qy, int qr, string xfangxiang, string yfangxiang) rn rdb; } } } 2.2.2.程序窗体 2.2.2.1程序主界面 进入游戏时主界面,能够选择开始、帮助和退出功效。 2.2.2.1程序主界面 2.2.2.2 游戏界面 游戏开始前画面,显示游戏信息,分数、关卡、及生命次数。 2.2.2.2游戏界面 2.2.2.3帮助界面 帮助信息,是相关游戏怎样开始,介绍游戏玩法,和开发作者游戏说明。 2.2.2.3帮助界面 2.2.2.4开始游戏 进入游戏以后,游戏开始画面,空格开始游戏,能够经过键盘←、→来控制挡板移动。 2.2.2.4开始游戏 2.2.2.5游戏结束 游戏结束画面,当你用完全部生命时,会弹出此窗口,提醒你所得分数,游戏结束,可退出。 2.2.2.5游戏结束 2.2.2.6游戏过关提醒 当你打光全部砖块时,屏幕会出现此字样,提醒你点击进入下一关,显示剩下生命值。 2.2.2.6游戏过关 2.2.3异常处理说明 退出命令。用户可直接退出程序。 注意,假如在游戏过程中鼠标点击别地方,或关闭别文件,此时游戏会继续运行,只关键点击窗口则会继续进行。 2.2.4程序运行效果及存在问题 2.2.4.1未处理问题 2.2.4.1未处理问题 2.3程序部分源代码及注释 2.3.1 RussiaBlock类 以下包含词语基础块指是由四个小方块组成实体,四个小方块指是小正方形。方块和基础块同义。 1) 结构函数,经过给定参数:控件实例,左边界,底边界,小方块(一个基础块由4个小方块组成)单位象素,形状号,起始位置,颜色。 2) 程序部分源代码及注释 using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace Arkanoid { public partial class GameCol1 : Form { public GameCol1() { InitializeComponent(); } Point[] pointPic = new Point[50]; //封装pictureBox对象 string keySpace = ""; //是否按下空格键 string key = ""; //是否按下左右键 string xfangxiang = "XRight"; //X方向默认为右 string yfangxiang = "YTop"; //Y方向默认为上 int x = 4; //X坐标移动方向 int y = 4; //Y坐标移动方向 public static int count = 3; //剩下机会 int bw = 0; //砖块宽度 int bh = 0; //砖块高度 int qr = 0; //球直径 Point dispoint = new Point(999, 999); //移动砖块到XY位置 public static int score = 0; //得分 int _count = -1; int countB = 50; ReturnDataBean rdb = new ReturnDataBean(); //控制球移动timer事件 private void timer1_Tick(object sender, EventArgs e) { _count = -1; //击中哪一个砖块 if (countB == 0) { keySpace = "Stop"; xfangxiang = ""; yfangxiang = ""; this.picNext.Location = new Point(12, 254); } //右上 if (keySpace == "Space" && xfangxiang == "XRight" && yfangxiang == "YTop") { this.TopRight(); } //左下 else if (keySpace == "Space" && xfangxiang == "XLeft" && yfangxiang == "YTop") { this.TopLeft(); } //左下 else if (keySpace == "Space" && xfangxiang == "XLeft" && yfangxiang == "YDown") { this.DownLeft(); } //右下 else if (keySpace == "Space" && xfangxiang == "XRight" && yfangxiang == "YDown") { this.DownRight(); } //判定是否击中球 if (_count >= 0 && _count < 50) { this.IsScore(_count); } } //按下键盘键发生事件 private void GameCol1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Left) { key = e.KeyCode.ToString(); } if (e.KeyCode == Keys.Right) { key = e.KeyCode.ToString(); } if (e.KeyCode == Keys.Space) { keySpace = e.KeyCode.ToString(); } } //释放键盘键发生事件 private void GameCol1_KeyUp(object sender, KeyEventArgs e) { key = ""; } //单击退出键发生事件 private void lblClose_Click(object sender, EventArgs e) { GameMain.isLoginGame = false; Program.bol = true; this.Close(); } private void lblClose_MouseEnter(object sender, EventArgs e) { this.lblClose.ForeColor = Color.Red; } private void lblClose_MouseLeave(object sender, EventArgs e) { this.lblClose.ForeColor = Color.Black; } private void goFeichuan_Tick(object sender, EventArgs e) { if (key == "Left") { Point Fpoint = this.picFeichuan.Location; Point Qpoint = this.picQiu.Location; if (this.picFeichuan.Location.X >= (this.picLeftborder.Location.X + 18)) { Fpoint.X -= 10; if (keySpace == "") { Qpoint.X -= 10; } } this.picFeichuan.Location = Fpoint; this.picQiu.Location = Qpoint; } else if (key == "Right") { Point Fpoint = this.picFeichuan.Location; Point Qpoint = this.picQiu.Location; if (this.picFeichuan.Location.X <= (this.picRightborder.Location.X - 97)) { Fpoint.X += 10; if (keySpace == "") { Qpoint.X += 10; } } this.picFeichuan.Location = Fpoint; this.picQiu.Location = Qpoint; } } 3) 游戏结束代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace Arkanoid { public partial class GameOver : Form { public GameOver() { InitializeComponent(); } private void lblExit_Click(object sender, EventArgs e) { Application.Exit(); } private void lblExit_MouseEnter(object sender, EventArgs e) { this.lblExit.ForeColor = Color.Red; } private void lblExit_MouseLeave(object sender, EventArgs e) { this.lblExit.ForeColor = Color.Black; } private void GameOver_Load(object sender, EventArgs e) { this.lblScore.Text = GameCol1.score.ToString(); } private void label1_Click(object sender, EventArgs e) { } } } 2.4 测试结果 2.4.1 主窗体运行界面 编程完成后,运行调试,主窗体界面,及游戏信息。 2.4.1主窗体运行界面 第3章 程序设计总结 在期末课程设计中,我选择是设计一个游戏(打砖块),这对于我们来说是一次尝试和创新过程,也能够说是一个挑战过程毕竟以前没有做过这类课设,缺乏一定经验,现在利用自己学到知识设计并制作一个游戏,这本身就是一个知识转化为生产力过程,所以我很兴奋,投入了很高热情和努力 在具体设计和实施中,我感受到了一个程序和无到有过程,对具体设计步骤,思绪,方法,技巧全部有了深入了解,而且感受深刻。 在设计中我基础根据规范方法和步骤进行,首先调查这个游戏,并查阅相关资料,然后确定设计方案,最终设计并制作,实施过程中我深刻认识到认真做游戏关键性。一开始因为不细心出现了错误,这方面我应该加强。在这次设计中我们两人一组,分工和相互协调很关键,我们扬长避短,各及所长和合作意识并有效地缩短开发时间。 经过这次设计,我学到了很多,同时也学到了细心和耐心培养。我想这在未来工作或社会“旅程”中全部将起到很大作用,同时也学会了怎样和人相处,和她人配合,共同完成这份作业。 在此我要感谢我任课老师和我指导老师,由衷感谢你们! 参考文件 1. 余仁才《C#课程设计教程》.5 2. 罗飞《Visual C#编程实例精粹》 .3 3. 郑敬东《C#程序设计教程》.9 4. 罗斌 越飞 等编著《Visual C# 编程实例精粹》 .3 5. 郑阿奇 梁敬东主编《C#程序设计教程》.9 6. 张家祥 方凌江 张贤坤 何鑫 等编著《C#范例解析》.5 7. 段德亮,余健,张仁才 编《C#课程设计案例精编》。5 8. 刘洪成《C#高级教程》清华大学出版社 9. 张祥 张鑫《C#范例解析》.5 10. 张凌江《C#范例解析》.5 11. 孙永强等. Visual C#.NET入门和提升.北京:清华大学出版社. 12. B-power工作室.C#网络程序设计. 北京: 中国铁道出版社. 13. [美]Anders Hejlsberg,Scott Wiltamuth,Peter Golde著, 张晓坤 谭立平 车树良译《C#编程语言详解》.北京:电子工业出版社.- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业课程 设计 砖块
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文