8贪吃蛇游戏课程设计实验报告
贪吃蛇游戏程序设计实验报告

贪吃蛇游戏程序设计实验报告贪吃蛇游戏程序设计实验报告1、引言1.1 文档目的1.2 背景介绍1.3 项目概述2、需求分析2.1 用户需求2.2 功能需求2.3 非功能需求3、总体设计3.1 系统结构3.2 使用的开发工具和技术3.3 程序流程图3.4 数据结构设计4、模块设计4.1 游戏界面模块设计4.2 蛇的移动模块设计4.3 食物模块设计4.4 游戏结束判定模块设计5、开发过程5.1 编码规范5.2 界面设计与实现5.3 功能模块实现5.4 联合测试与整合调试6、测试结果与分析6.1 单元测试6.2 集成测试6.3 性能测试6.4 用户验收测试7、部署与运维7.1 系统环境要求7.2 安装步骤7.3 运行与维护8、问题与解决方案8.1 开发中的问题8.2 解决方案9、结论9.1 实验总结9.2 实现目标9.3 后续改进方向附件:- 源代码文件- 参考文献法律名词及注释:- 版权:保护原创作品的独有权利,防止他人未经授权使用、复制或传播。
- 许可证:授权他人在特定条件下使用受版权保护的作品。
- 商标:用于标识特定产品或服务来源的标识,可以是文字、图形、颜色或声音。
- 专利:通过创造一种新的发明而获得的对该发明的独有权利,防止他人在未获许可的情况下制造、使用或销售该发明。
- 使用条款:规定使用软件、服务或作品的条件和限制。
- 免责声明:声明作者或提供者对使用软件、服务或作品时可能产生的损害不承担责任。
全文结束 \。
贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现学校:轻工大学院系:班级:姓名:学号:2015 年12月16日目录一、题目介绍二、设计目的三、详细设计3.1贪吃蛇本体设计3.2贪吃蛇食物设计3.3游戏界面设计3.3.1游戏初始化3.3.2游戏开始3.3.3游戏暂停3.3.4游戏退出3.3.5游戏总界面3.3.6游戏区域与背景3.3.7关于SNAKE3.4玩法规则设计3.5核心设计四、功能测试五、总结六、参考文献一、题目介绍:编写一个基于MFC的小游戏。
基本要求:1、实现一个小游戏2、实现基本游戏控制功能3、具有游戏数据保存功能4、界面布局合理、美观;二、设计目的:通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。
了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。
程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。
培养和锻炼开发游戏的能力。
三、详细设计3.1贪吃蛇的本体设计贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下:struct Snake{int x,y;int len;int direct;}Snake[50];3.2贪吃蛇食物设计贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。
struct Food{int x;int y;int isfood;}Food;3.3游戏界面设计3.3.1游戏初始化游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;void CSNAKEView::OnInitialUpdate(){CView::OnInitialUpdate();Snake[0].x=10;Snake[0].y=10;Snake[1].x=11;Snake[1].y=10;Snake[2].x=12;Snake[2].y=10;Snake[0].direct=3;Snake[0].len=3;Food.isfood=1;//初始化贪吃蛇起初有3个节点,长度为3,起始坐标;食物默认为1无0有// TODO: Add your specialized code here and/or call the base class }void CSNAKEView::oninit(){CDC *pDC=GetDC();CBrush DrawBrush=(RGB(100,100,100));CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);for(int i=0;i<=Snake[0].len-1;i++)pDC->Rectangle(Snake[i].x*20,Snake[i].y*20,(Snake[i].x+1)*20,(Snake[i].y+1)*2 0);pDC->SelectObject(DrawBrush);}3.3.2游戏开始点击游戏开始菜单后,出现一个对话框,提示一秒后,将开始游戏。
关于贪吃蛇的实训报告

一、实训目的本次实训旨在通过C语言编程实现贪吃蛇游戏,巩固和加深对C语言程序设计的基本知识的理解和掌握,提高编程和程序调试的基本技能,并锻炼独立自主设计程序和编辑代码的能力。
通过设计贪吃蛇游戏,进一步理解和运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的基本方法,以及掌握书写程序设计开发文档的能力。
二、实训内容1. 游戏规则贪吃蛇游戏的基本规则如下:- 蛇在游戏区域中上下左右移动,通过键盘方向键控制。
- 每次蛇头撞到食物,蛇身增长一节,同时计10分。
- 若蛇头撞到墙壁或自身,游戏结束。
- 游戏区域大小、蛇的初始长度、食物的生成方式等参数可调整。
2. 程序设计(1)数据结构- Food结构体:用于存储食物的位置信息,包括横坐标x、纵坐标y和是否生成食物的标志yes。
```cstruct Food {int x;int y;int yes;};```- Snake结构体:用于存储蛇的位置信息、长度、移动方向和生命状态。
```cstruct Snake {int x[N];int y[N];int node;int direction;int life;};```(2)功能模块- 初始化函数:初始化游戏区域、蛇的位置、长度、方向和生命状态,以及食物的位置信息。
- 键盘输入处理函数:获取键盘输入,控制蛇的移动方向。
- 食物生成函数:根据设定规则生成食物。
- 蛇移动函数:根据蛇的移动方向和速度,更新蛇的位置信息。
- 游戏判断函数:判断蛇是否吃到食物、撞到墙壁或自身,以及游戏是否结束。
- 界面绘制函数:绘制游戏区域、蛇和食物。
三、程序实现以下为部分关键代码示例:```c// 初始化函数void init() {// 初始化游戏区域、蛇的位置、长度、方向和生命状态,以及食物的位置信息}// 键盘输入处理函数void keyInput() {// 获取键盘输入,控制蛇的移动方向}// 食物生成函数void generateFood() {// 根据设定规则生成食物}// 蛇移动函数void moveSnake() {// 根据蛇的移动方向和速度,更新蛇的位置信息}// 游戏判断函数void judgeGame() {// 判断蛇是否吃到食物、撞到墙壁或自身,以及游戏是否结束}// 界面绘制函数void draw() {// 绘制游戏区域、蛇和食物}```四、实训心得与体会1. 编程能力提升:通过本次实训,我对C语言编程和程序设计有了更深入的理解,编程能力得到了显著提升。
贪吃蛇实习报告范文

一、实习背景随着计算机技术的不断发展,编程技能已经成为现代社会人才必备的能力之一。
为了提高自己的编程能力,我在某科技公司进行了为期一个月的贪吃蛇游戏开发实习。
通过这次实习,我对贪吃蛇游戏有了更深入的了解,并掌握了相关编程技能。
二、实习目的1. 学习和掌握贪吃蛇游戏的基本原理和开发流程;2. 提高自己的编程能力,特别是C语言编程能力;3. 熟悉游戏开发工具和开发环境;4. 培养团队合作和沟通能力。
三、实习内容1. 游戏设计在实习过程中,我首先对贪吃蛇游戏进行了详细的设计。
游戏分为以下几部分:(1)游戏界面:包括标题界面、游戏界面、游戏结束界面等;(2)游戏规则:蛇在游戏区域内吃食物,蛇身会逐渐变长,蛇头撞到墙壁或自身则游戏结束;(3)游戏控制:通过键盘上的四个方向键控制蛇的移动方向;(4)游戏得分:蛇每吃一个食物,得分增加10分;(5)游戏难度:随着游戏进行,食物出现速度逐渐加快。
2. 程序开发在游戏设计完成后,我开始进行程序开发。
主要使用了C语言进行编程,以下是程序的主要模块:(1)初始化游戏环境:设置游戏窗口、绘制游戏界面等;(2)生成食物:在游戏区域内随机生成食物,确保食物不与蛇身重叠;(3)蛇的移动:根据用户输入的方向键,控制蛇的移动方向;(4)检测碰撞:检测蛇头是否撞到墙壁或自身,如果碰撞则游戏结束;(5)更新分数:根据蛇吃食物的次数,更新游戏分数;(6)游戏结束:当蛇头撞到墙壁或自身时,显示游戏结束界面。
3. 调试与优化在程序开发过程中,我遇到了一些问题,如蛇的移动速度不均匀、食物生成位置不合理等。
针对这些问题,我进行了以下优化:(1)调整蛇的移动速度,使其更加均匀;(2)优化食物生成算法,确保食物生成位置合理;(3)调整游戏界面,使界面更加美观。
四、实习成果通过一个月的实习,我成功完成了贪吃蛇游戏开发,并取得以下成果:1. 掌握了贪吃蛇游戏的基本原理和开发流程;2. 提高了C语言编程能力,特别是结构体、函数、数组等知识的应用;3. 熟悉了游戏开发工具和开发环境;4. 培养了团队合作和沟通能力。
贪吃蛇实习报告总结

贪吃蛇实习报告总结本次实习的主要内容是设计和实现一个贪吃蛇游戏。
通过本次实习,我深刻地理解了程序设计的基本原理和编程技巧,同时也锻炼了自己的解决问题和团队合作的能力。
在本次实习中,我负责实现了贪吃蛇游戏的主要功能,包括游戏逻辑、界面显示和键盘控制。
在实现过程中,我采用了面向对象的设计方法,将游戏中的各种元素抽象成类,并采用继承和多态等机制来实现游戏的各种功能。
同时,我还使用了计算机图形学的基本知识,实现了游戏界面的绘制和更新。
在团队合作方面,我和其他同学一起完成了游戏的设计和实现工作。
我们通过定期会议和在线讨论等方式,交流了彼此的想法和进展,并及时解决了遇到的问题。
在分工合作的过程中,我学会了如何合理地分配任务和协调工作,同时也提高了自己的沟通能力和团队合作精神。
在解决问题的过程中,我遇到了许多挑战。
例如,在实现游戏逻辑时,我需要处理许多复杂的状态和情况,如蛇的移动、食物的生成和得分等。
为了解决这些问题,我通过阅读相关文献和参考其他游戏的实现方式,不断摸索和尝试,最终找到了合适的解决方案。
通过本次实习,我不仅学会了如何设计和实现一个游戏,更重要的是学会了如何面对复杂的问题和挑战。
在实现游戏的过程中,我不断遇到各种困难和障碍,但是通过自己的努力和团队合作,我最终克服了这些困难,成功地完成了实习任务。
这种解决问题的能力和团队合作精神将对我未来的学习和工作产生积极的影响。
总结起来,本次实习是一次非常有意义的学习和实践过程。
通过设计和实现一个贪吃蛇游戏,我不仅掌握了程序设计的基本原理和编程技巧,还锻炼了自己的解决问题和团队合作的能力。
我相信这次实习经历将对我未来的学习和工作产生积极的影响。
设计贪吃蛇实验报告

一、实验目的1. 掌握游戏设计的基本流程和原则。
2. 学会使用Unity游戏引擎进行游戏开发。
3. 提高编程能力和逻辑思维能力。
4. 实现贪吃蛇游戏,并优化游戏性能。
二、实验环境1. 操作系统:Windows 102. 开发工具:Unity 2019.4.10f13. 编程语言:C#三、实验内容1. 游戏设计2. 场景搭建3. 贪吃蛇游戏逻辑实现4. 游戏优化四、实验步骤1. 游戏设计(1)确定游戏主题:贪吃蛇(2)游戏规则:玩家控制蛇头,通过移动蛇头吃到食物,蛇的长度逐渐增加。
同时,蛇头不能撞到墙壁或自己的身体,否则游戏结束。
(3)游戏界面:包括游戏主界面、游戏场景、得分显示、游戏结束界面等。
2. 场景搭建(1)创建游戏场景:使用Unity编辑器创建一个3D场景,命名为“贪吃蛇场景”。
(2)添加墙壁:使用Unity编辑器中的Cube对象创建墙壁,设置墙壁的位置和大小,使墙壁围成一个封闭的空间。
(3)添加食物:使用Unity编辑器中的Sphere对象创建食物,设置食物的位置和大小。
3. 贪吃蛇游戏逻辑实现(1)创建蛇头和蛇身:使用Unity编辑器中的Cube对象创建蛇头和蛇身,设置蛇头和蛇身的位置和大小。
(2)控制蛇头移动:编写C#脚本,实现蛇头在四个方向上的移动。
(3)蛇头吃到食物:当蛇头与食物接触时,蛇的长度增加,食物消失。
(4)蛇头撞到墙壁或自身:当蛇头与墙壁或自身接触时,游戏结束。
4. 游戏优化(1)提高游戏帧率:通过优化代码和减少资源消耗,提高游戏帧率。
(2)优化蛇身移动:在蛇身移动时,减少不必要的计算,提高游戏性能。
五、实验结果与分析1. 实验结果通过以上步骤,成功实现了一个简单的贪吃蛇游戏。
游戏界面简洁,操作方便,符合游戏设计原则。
2. 实验分析(1)游戏设计方面:游戏规则简单易懂,游戏画面简洁,符合玩家需求。
(2)场景搭建方面:墙壁和食物的布局合理,有利于游戏进行。
(3)游戏逻辑实现方面:蛇头移动、吃到食物、撞墙等逻辑实现正确,游戏运行稳定。
贪吃蛇课程设计python报告
贪吃蛇课程设计python报告一、教学目标本课程旨在通过学习Python编程语言实现一个贪吃蛇游戏,让学生掌握以下知识目标:1.理解Python的基本语法和数据类型。
2.学会使用Python进行流程控制和函数定义。
3.理解面向对象编程的基本概念。
4.能够独立编写简单的Python程序。
5.能够利用Python实现基本的贪吃蛇游戏。
情感态度价值观目标:1.培养学生对编程的兴趣,提高学生的信息素养。
2.培养学生解决问题的能力,提高学生的创新意识。
二、教学内容根据课程目标,我们选择Python作为编程语言,以贪吃蛇游戏为例,让学生在实践中掌握编程知识和技能。
具体的教学大纲如下:1.第一章:Python基础。
学习Python的基本语法、数据类型和变量。
2.第二章:流程控制。
学习条件语句、循环语句和函数定义。
3.第三章:面向对象编程。
学习类和对象的概念,以及如何定义和调用方法。
4.第四章:贪吃蛇游戏实现。
利用所学知识编写贪吃蛇游戏的代码,并进行调试和优化。
三、教学方法为了激发学生的学习兴趣和主动性,我们采用以下教学方法:1.讲授法:讲解Python的基本语法、数据类型和流程控制知识。
2.讨论法:学生讨论面向对象编程的概念和实现方法。
3.案例分析法:通过分析贪吃蛇游戏的代码,让学生理解编程思路。
4.实验法:让学生动手编写和调试贪吃蛇游戏,提高实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,我们准备以下教学资源:1.教材:《Python编程:从入门到实践》2.参考书:《Python核心编程》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络环境通过以上教学资源,学生可以更好地学习Python编程,并在实践中掌握贪吃蛇游戏的开发技能。
五、教学评估本课程的教学评估将采取多元化方式进行,以全面、客观、公正地评估学生的学习成果。
评估方式包括:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和积极性。
贪吃蛇java实验报告doc
贪吃蛇java实验报告doc贪吃蛇java实验报告篇一:JAVA贪吃蛇课程设计报告《Java应用开发》课程设计报告题目:指导老师:姓名:专业:班级:日期:JAVA小游戏 - 贪吃蛇目录一、系统总体设计 ................................. 1 (一)设计目标及完成功能 ........................ 1 (二)系统结构设计 .............................. 1 二、详细设计 ..................................... 2(一) 界面设计 ................................... 2 (二) 系统设计 ................................... 4 (三) 关键技术及算法 ............................. 6 四、测试 ......................................... 7五、安装使用说明 (7)总结(体会) ..................................... 8参考文献 .. (8)一、系统总体设计(一)设计目标及完成功能本软件是针对贪吃蛇小游戏的JAVA程序,利用上、下、左、右方向键来改变蛇的运动方向,长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏,在到达固定的分数后,游戏速度会加快。
1.窗口功能说明:设计了三个窗口,分别是游戏主窗口,成绩窗口,游戏帮助和关于作者窗口。
2.菜单栏分别为:游戏菜单和帮助菜单其中,游戏菜单包括开始游戏和退出游戏两项;帮助菜单包括游戏帮助和关于作者两项。
(二)系统结构设计图1-1 系统结构图二、详细设计(一) 界面设计贪吃蛇游戏的基本运行界面(1)生成初始界面:图2-1 初始界面(2)游戏菜单栏:图2-2 游戏菜单(2)积分排行菜单栏:图2-3 积分排行菜单(3)进行游戏界面:点击“游戏”,进入游戏菜单,选择“开始游戏”,或者。
程序设计实训报告 贪吃蛇游戏
课程设计报告学院、系:专业:学生姓名:学号:设计题目:贪吃蛇游戏起迄日期:指导教师:发任务书日期: 2012年6月10日附录:系统源代码#define N 200#include "graphics.h" #include "stdio.h"#include "stdlib.h" #include "dos.h"#define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800#define Esc 0x011bint i,key,cor,lev;int score = 0;int gamespeed;struct Food{int x, y;int yes;}food;struct Snake{int x[N], y[N];int node, direction, life; }snake;void Init();void Close();void DrawK();void GameOver();void GamePlay();void PrScore();void SelectLevel();void SelectColor();void main(){SelectLevel();SelectColor();Init();DrawK();GamePlay();Close();}void SelectLevel(){for(i=0;i<10;i++)printf(" ");for(i=0;i<50;i++)printf("*");printf("\n");for(i=0;i<10;i++)printf(" ");printf("*");for(i=0;i<48;i++)printf(" ");printf("*");printf("\n");for(i=0;i<10;i++)printf(" ");printf("*");printf(" Please select the level! *\n"); for(i=0;i<10;i++)printf(" ");printf("*");printf(" 1:Easy 2:Normal 3:Hard *\n"); for(i=0;i<10;i++)printf(" ");printf("*");for(i=0;i<48;i++)printf(" ");printf("*");printf("\n");printf(" ");for(i=0;i<50;i++)printf("*");printf("\n");printf("Please selcet:");scanf("%d",&lev);switch(lev){case 1: gamespeed=50000;break; case 2: gamespeed=100000;break; case 3: gamespeed=150000;break; default: break;}}void SelectColor(){for(i=0;i<10;i++)printf(" ");for(i=0;i<50;i++)printf("*");printf("\n");for(i=0;i<10;i++)printf(" ");printf("*");for(i=0;i<48;i++)printf(" ");printf("*");printf("\n");printf(" ");printf("*");printf(" Please select the color! *\n"); for(i=0;i<10;i++)printf(" ");printf("*");printf(" 1:Black 2:Green 3:Gray *\n"); for(i=0;i<10;i++)printf(" ");printf("*");for(i=0;i<48;i++)printf(" ");printf("*");printf("\n");for(i=0;i<10;i++)printf(" ");for(i=0;i<50;i++)printf("*");printf("\n");printf("Please selcet:");scanf("%d",&cor);switch(cor){case 1: cor=0;break;case 2: cor=10;break;case 3: cor=8;break;default: break;}}void Init(){int gd = DETECT, gm;initgraph(&gd, &gm, "c\\tc");cleardevice();}void DrawK(){setbkcolor(cor);setcolor(11);setlinestyle(SOLID_LINE, 0, THICK_WIDTH); for( i=50; i<=600; i+=10){rectangle(i, 40, i+10, 49);rectangle(i, 451, i+10, 460);}for( i=40; i<=450; i+=10){rectangle(50, i, 59, i+10);rectangle(601, i, 610, i+10);}}void GamePlay(){randomize();food.yes = 1;snake.life = 0;snake.direction = 1;snake.x[0] = 100; snake.y[0] = 100;snake.x[1] = 110; snake.y[1] = 100;snake.node = 2;PrScore();while(1){while(!kbhit()){if(food.yes==1){food.x = rand()%400+60;food.y = rand()%350+60;while(food.x%10!=0){food.x++;}while(food.y%10!=0){food.y++;}food.yes = 0;}if(food.yes==0){setcolor(GREEN);rectangle(food.x, food.y, food.x+10, food.y-10); }for( i=snake.node-1; i>0; i--){snake.x[i] = snake.x[i-1];snake.y[i] = snake.y[i-1];}switch(snake.direction){case 1: snake.x[0] += 10; break;case 2: snake.x[0] -= 10; break;case 3: snake.y[0] -= 10; break;case 4: snake.y[0] += 10; break;}for( i=3; i<snake.node; i++){if(snake.x[i] == snake.x[0] && snake.y[i] == snake.y[0]){GameOver();snake.life = 1;break;}}if(snake.x[0]<55 || snake.x[0]>595 || snake.y[0]<55 || snake.y[0]>455){GameOver();snake.life = 1;}if(snake.life == 1) break;if(snake.x[0] == food.x && snake.y[0] == food.y){setcolor(0);rectangle(food.x, food.y, food.x+10, food.y-10);snake.x[snake.node] = -20;snake.y[snake.node] = -20;snake.node ++;food.yes = 1;score += 10;PrScore();}setcolor(4);for( i=0; i<snake.node; i++){rectangle(snake.x[i], snake.y[i], snake.x[i]+10, snake.y[i]-10);}delay(gamespeed);setcolor(0);rectangle(snake.x[snake.node-1], snake.y[snake.node-1],snake.x[snake.node-1]+10, snake.y[snake.node-1]-10);}if(snake.life==1) break;key = bioskey(0);if(key==Esc) break;else if(key==UP && snake.direction!=4)snake.direction = 3;else if(key==RIGHT && snake.direction!=2)snake.direction = 1;else if(key==LEFT && snake.direction!=1)snake.direction = 2;else if(key==DOWN && snake.direction!=3)snake.direction = 4;}}void GameOver(){cleardevice();PrScore();setcolor(RED);settextstyle(0, 0, 4);outtextxy(200, 200, "GAME OVER" ); getch();}void PrScore(){char str[10];setfillstyle(SOLID_FILL, YELLOW); bar(50, 15, 220, 35);setcolor(6);settextstyle(0, 0, 2);sprintf(str, "score:%d", score); outtextxy(55, 20, str);}void Close(){getch();closegraph();}。
贪吃蛇实验报告
贪吃蛇实验报告
一、实验目的
1、了解贪吃蛇游戏的原理和流程;
2、掌握贪吃蛇游戏的代码实现方法;
3、加深对 Python 语言编程和逻辑思维的理解。
二、实验材料
1、Python 编程环境 PyCharm;
2、Python 相关库 pygame、random;
3、贪吃蛇游戏素材(贴图等)。
三、实验步骤
1、安装 Python 开发环境 PyCharm,并安装 pygame 和 random 库;
2、设计贪吃蛇游戏的界面元素,包括蛇、食物、背景等,确定游戏的流程与规则;
3、根据设计,编写 Python 代码实现游戏界面和游戏规则;
4、调试程序,运行并测试贪吃蛇游戏的功能和流程。
四、实验结果
1、游戏开始时,蛇的长度为 1,位置在屏幕中央,食物随机
生成;
2、当蛇吃到食物时,蛇的长度加 1,食物重新生成;
3、如果蛇碰到屏幕边缘或自己的身体,则游戏结束,窗口显
示结束界面;
4、游戏界面左上角显示当前得分(蛇的长度),中间显示时
间和当前运行帧率;
5、游戏过程中可以通过键盘操作改变蛇的方向,即使按下相
反的方向键,也不会立刻死亡,而是会继续前进一格。
五、实验总结
贪吃蛇游戏是一种经典的小游戏,通过本次实验,我们学习了Python 编程语言、pygame 游戏引擎、random 库等相关知识,
并实现了一个简单的贪吃蛇游戏。
在实验过程中,我们深入了解游戏的规则和逻辑,并通过编写代码实现了游戏的基本流程。
通过该实验,加强了自己的编程和思维能力,为将来进行更复杂的游戏开发提供了基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书
设计题目: 学院、系: 专业班级: 学生姓名: 指导教师: 成 绩:
基于 C#的贪吃蛇游戏 装备制造学院 计算机科学与技术 叶佳佳 丁宁
2015 年 12 月 12 日
目录
一、概述......................................................................................... 1 1、用 C#实现该设计的方法.................................................................... 1 2、贪吃蛇游戏说明.................................................................................. 1
二、实验目的及设计要求........................................................... 1 1、实验目的...............................................................................................1 2、实验要求...............................................................................................2
10
2、实验结果
(1) 游戏运行主界面
(2)帮助界面 (3)结束界面
11
五、实验心得
这次的课设对我来说有很大的收获,我学到了许多课本上没有学到的知识,这次我将将 课本上的理论知识充分的转化成了一些实用技能。通过这次自己制作的软件,丰富了自己的 实践技能,扩展课本专业的知识面。在这次设计的同时,我又从中学到了许多东西。但由于 我对这样的软件开发还只是一个开始,了解的不多,这其中或许还有很多的不足,有些模块 做的不是很好,界面的设计及整体的布局还是比较简单。
for (int i = 0; i <sk.Wall.Count; i++) { this.panel1.Controls.Add((Label)sk.Wall[i]);}
(3)在玩游戏的过程中发现食物会与墙壁还有炸弹重合的情况,然后通过分析原因,这与 构造食物时判断食物与身体是否接触的道理是一样的,这里需要加一个循环语句来判断,如 果不是墙的话才在这里创造食物。 (4)在创造炸弹的实现过程中,总是在炸弹的右半边任何位置都爆炸,通过一步一步的调 试检查是在判断语句时右侧的范围太大,导致有半侧没有炸弹也爆炸。通过调试找到正确的 范围。
根据流程图编写好代码后在 WindowsXP 操作系统,2008 开发环境下进行运行测 试,检查错误,最终设计出可行的程序。
2、贪吃蛇游戏说明
游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围 墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移 动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计 10 分;接着又出现食 物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的 身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可 以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚;
1.2、主模块实现
1.snake 的设计模块
2
2. Form 的设计模块
3
1.3、主函数流程图
开始பைடு நூலகம்戏
暂停 是否继续
否
蛇开始移动
根据键盘控制蛇移动方向
是 判断蛇头和 食物的坐标 是否重合
是 随机生成下一个食物
否 否
判断蛇头和 自身及墙、炸 弹是否重合
是 游戏结束
4
2、详细设计 2.1、设计思想
6
5、蛇吃食物的模块 通过 Timer 控件来设置时间,,吃到食物之后身体增长,蛇的身体颜色是三色交替出现,每 吃到一个食物积分加 10,身体加长对应增长。而且还要判断是否需要更改蛇的运行速度。
7
7、是否撞到自己模块 当贪吃蛇自己碰到自己的身体时游戏结束
8、游戏结束模块 9、初始化 panel
8
四、调试过程及运行结果......................................................... 10 1、调试过程.............................................................................................10 2、实验结果.............................................................................................11
首先进入 VS2008 打开文件新建一个项目,点击 windows 窗体应用程序,名字设为 Snakes 。 进入 Form 的设计界面,首先我们都知道游戏最基本的功能有开始,暂停,继续,退出,所以 首先要先加 4 个 button 键来控制游戏,再加一个 TextBox 文本框来显示成绩。在窗体中加入 Panel 来实现贪吃蛇的运动空间,设置有一个游戏的界面运动空间。之后就要定义一个 sakes 类,来实现蛇的一些属性与方法,首先明白这个游戏实现的是贪吃蛇吃食物,所以还需要定 义食物,食物被吃后要实现食物的重建。玩游戏时还需要有控制键的设置,这一模块可以选 用 Switch 语句来实现。实现基本的功能后要注意怎样的情况会造成蛇的死亡,可以想到的有 越界线,咬到自己都会死亡。随着思想的成熟,觉得只吃食物好像太简单,所以在这个贪吃 蛇游戏的基础上又设置了一些障碍,加了几堵墙,还设置了随机的炸弹,这样游戏就更有意 思了,加上以前玩俄罗斯方块的一些感觉,还设置了游戏的不断加速的模块。
五、实验心得............................................................................. 12 六、参考资料............................................................................. 13 七、附录:源代码..................................................................... 13
三、课程设计具体实现
1、概要设计
1.1、设计思想
程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长 一节,增加一个矩形块,蛇头(绿色)用三节表示。移动时必须从蛇头开始,所以蛇不可以 向相反的方向移动,如果不按任意键,蛇自行在当前方向右前移,但按下有效方向键后,蛇 头朝该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇 的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原 来的蛇的位置和新的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后节用背景 色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体: 食物与蛇,同时还定义了一个随意的墙。然后利用图形驱动,,制作美观的游戏界面,通过随 机函数产生随机的食物,控制游戏过程食物的出现。定义键盘操作控制游戏过程蛇的移动方 向,画出边界,并判断游戏是否结束,统计游戏过程中蛇吃的食物数量,计算并输出游戏成绩。
10、初始化 Form 并添加背景音乐(Kalimba.wav) 11、控制蛇的运动方向
9
四、调试过程及运行结果
1、调试过程
(1)在实现撞障碍物的过程中,刚刚开始的时候墙不能起作用,贪吃蛇总是能穿过障碍 物,后来才发现时障碍物的设置范围出现了错误。经过不停的尝试与计算才算出正确的范 围。
(2)在实现固定墙的过程中是通过使用 Label 来实现的,跟创建贪吃蛇的思想是一样的, 但是在运行过程中刚刚开始的时候不出现障碍物,后来在老师的帮助下发现原来少一句 话,需要在 NowStar()函数中增加障碍物的显示
一、概述
1、用 C#实现该设计的方法
首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能, 要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多, 也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模 块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加 理解难度。此外,流程图应容易转换成代码。
三、课程设计具体实现............................................................... 2 1、概要设计...............................................................................................2 1.1、设计思想.............................................................................................. 2 1.2、主模块实现..........................................................................................2 1.3、主函数流程图......................................................................................4 2、详细设计...............................................................................................5 2.1、设计思想.............................................................................................. 5 2.2、具体模块实现:..................................................................................5