贪吃蛇课程设计报告
- 格式:doc
- 大小:402.00 KB
- 文档页数:15
qt贪吃蛇课程设计总结一、教学目标本课程的教学目标是使学生掌握Qt贪吃蛇游戏的基本开发方法和技巧,培养学生运用编程思维解决实际问题的能力。
具体目标如下:1.知识目标:–了解Qt框架的基本概念和原理;–掌握Qt Creator的使用方法和编程环境;–掌握贪吃蛇游戏的基本算法和数据结构;–熟悉Qt Widget编程和事件处理。
2.技能目标:–能够独立设置Qt开发环境,编写简单的Qt程序;–能够运用贪吃蛇游戏的基本算法,实现游戏的基本功能;–能够使用Qt Creator进行调试和优化程序;–能够根据需要,查阅相关资料和文档,解决问题。
3.情感态度价值观目标:–培养学生对编程和软件开发的兴趣和热情;–培养学生独立思考、自主学习和团队协作的能力;–培养学生勇于探索、创新和解决问题的精神;–培养学生具有良好的职业道德和责任意识。
二、教学内容根据课程目标,教学内容主要包括以下几个方面:1.Qt框架的基本概念和原理:Qt概述、Qt模块、信号与槽机制、Qt类体系结构等;2.Qt Creator的使用方法和编程环境:安装与配置、界面布局、编写代码、调试与运行等;3.贪吃蛇游戏的基本算法和数据结构:游戏流程、坐标系、蛇身模型、食物模型、方向控制、碰撞检测等;4.Qt Widget编程和事件处理:窗口布局、控件使用、事件处理机制、键盘和鼠标事件等。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解Qt框架的基本概念和原理,贪吃蛇游戏的基本算法和数据结构;2.案例分析法:分析典型代码和案例,引导学生理解和掌握相关知识;3.实验法:让学生动手编写和调试Qt程序,培养实际编程能力;4.小组讨论法:分组进行讨论和实践,培养团队协作和解决问题能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将提供以下教学资源:1.教材:《Qt编程入门》、《Qt Creator入门与实践》等;2.参考书:《Qt 5开发实战》、《Qt 5核心编程》等;3.多媒体资料:教学PPT、视频教程、在线文档等;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)游戏逻辑实现方面:蛇头移动、吃到食物、撞墙等逻辑实现正确,游戏运行稳定。
本科课程设计贪吃蛇游戏设计摘要 (3)Abstract (3)一.详细设计 (4)1.属性解释 (4)2.初始化坐标: (4)3.调用线程 (4)4.具体功能实现: (5)4.1.移动功能的实现: (5)4.2.吃食物功能实现: (6)4.3.判断游戏是否结束的功能实现: (8)4.4.画图方法的实现 (9)4.5.监听键盘动作: (10)5.界面的设计: (11)5.1进入程序界面设计 (11)5.2第2个界面的设计: (12)5.3第3个界面设计: (12)6.把程序植入手机中 (13)二.字符设备驱动程序实现 (13)三.总结: (14)四.参考文献: (14)五.致谢 (15)摘要程序核心思想:运行程序首界面(进入游戏,退出游戏)进入游戏后选择难度(简单,普通,高难)根据不同的难度设置相应的属性。
进入游戏界面。
首先初始化蛇的坐标,食物的坐标,和障碍物的坐标。
然后获取当前屏幕的大小为将来的边界判断做准备。
然后创建并执行线程。
线程基本流程:判断是否是暂停阶段,如果没有暂停就执行:eatFood();move(direction); repaint();如果游戏结束了就重新游戏或者退出。
AbstractCore of the process: first running the program interface (into the game, withdraw from the game) into the game after the difficult choice of (simple, ordinary, highly difficult) depending on the difficulty of setting the corresponding attribute. Into the game interface. First initialize the coordinates of the snake, coordinates food, and the coordinates of obstructions. And access to the size of the current screen for the future of the border to prepare for judgement. And then create and execution threads. Thread the basic process: determine whether the stage is suspended, if not the moratorium on the implementation of: eatFood (); move (direction); repaint (); game to an end if the game or out on the re.一.详细设计1.属性解释用1个2维数组snake[200][2]存放蛇身坐标,第2维是0的时候代表横坐标,为1的时候为纵坐标。
c 贪吃蛇课程设计一、课程目标知识目标:1. 让学生掌握贪吃蛇游戏的规则及基本编程逻辑。
2. 学习运用方向键控制蛇的移动,理解坐标概念。
3. 理解并运用循环、条件语句等编程结构。
技能目标:1. 培养学生运用编程解决问题的能力,提高逻辑思维。
2. 培养学生团队协作能力,通过小组讨论、合作完成游戏设计。
3. 提高学生的创新意识,鼓励对游戏进行改进和优化。
情感态度价值观目标:1. 培养学生积极的学习态度,对编程产生兴趣。
2. 培养学生的耐心和细心,面对编程过程中的困难能够持续调试和优化。
3. 培养学生遵守游戏规则,树立公平竞争的价值观。
课程性质:本课程为信息技术课程,结合实际操作,培养学生编程兴趣和能力。
学生特点:六年级学生,具备一定的信息技术基础,好奇心强,喜欢动手实践。
教学要求:注重理论与实践相结合,关注学生个体差异,鼓励学生积极参与,充分调动学生的主观能动性。
通过课程学习,使学生达到预定的学习成果,为后续学习打下坚实基础。
根据课程目标,教学内容主要包括以下几部分:1. 游戏规则介绍:讲解贪吃蛇游戏的基本规则,引导学生了解游戏设计的基本概念。
- 教材章节:第一章 游戏设计基础2. 编程逻辑:学习运用Python编程语言,掌握贪吃蛇游戏的编程逻辑。
- 教材章节:第二章 Python基础、第三章 控制结构3. 坐标系统与移动控制:理解坐标概念,运用方向键控制蛇的移动。
- 教材章节:第四章 图形与动画4. 游戏编程实践:分组进行贪吃蛇游戏的编程实践,巩固所学知识。
- 教材章节:第五章 游戏编程实例5. 游戏优化与拓展:鼓励学生对游戏进行优化和拓展,提高游戏的趣味性和挑战性。
- 教材章节:第六章 游戏优化与拓展教学进度安排:1. 第一周:介绍游戏规则,学习Python基础。
2. 第二周:学习控制结构,理解坐标系统。
3. 第三周:学习图形与动画,编写贪吃蛇移动控制代码。
4. 第四周:分组进行游戏编程实践,进行作品展示。
贪吃蛇课程设计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.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和积极性。
目录1. 课题分析与方案选择 (3)2.总体设计 (4)2.1 理论分析 (5)2.1.1 算法设计分析 (5)2.1.2 数据结构分析 (8)2.1.1 流程框图 (9)2.2 代码编写 (9)2.2.1 工具类 (9)2.2.2 载入类 (11)2.2.3 蛇类 (12)2.2.4 食物类 (13)2.2.5 地图类 (14)2.2.6 运行类 (15)3. 游戏测试 (15)3.1 载入界面测试 (16)3.2 简单模式测试 (16)3.3 普通模式测试 (16)3.4 困难模式测试 (17)4. 问题分析与解决 (19)5. 总结 (20)摘要贪吃蛇游戏作为一款简单游戏,是手机游戏的代表,在十多年前风靡全世界,时至今日,贪吃蛇游戏任然活跃的网络的各个角落。
本次编写的便是一款经典的贪吃蛇游戏,任务确定为实现贪吃蛇游戏过程。
作为游戏的组成,通过必要的图形,文字界面来引导游戏者参与到这款游戏中,更有效的吸引游戏者的兴趣,为了拓展游戏者对高分和刺激的追求,设定各种难度的关卡也成为了游戏的必需品,贪吃蛇游戏的编写共有八个类,其中,主要包括游戏的控制与游戏界面的建立两个方面,对于前者,需要通过控制台来获取输入,而对于后者,要求应用合适的数据结构和算法,通过编写本次课程设计,对理论知识与实际作品之间的关系有了更加深刻影响。
关键字:贪吃蛇,界面,难度控制,数据结构1 课题析与方案选择1.1课题分析本次设计为贪吃蛇游戏,一款游戏就必须要与使用者拥有良好的交互界面,使用C++对DOS界面显示的处理需要细致和精细,在游戏过程中,那么就会有游戏载入界面,游戏进行界面,和结束界面,在输入方面,这款游戏采用上下左右四个按键进行控制,需要用到回车键进行选择确定,而游戏的目标,则是获取更高分数,挑战更高难度。
功能设计框图1.2方案选择1.1.1软件选择本次编写软件为CODEBLOCKS 16.011.1.2设计选择通过分析,将游戏分为输入,游戏运行,输出三大部分,对于每个部分需要用不同的类进行实现和联系,大概将其分为五个类,分别为工具类,载入类,蛇体类,游戏界面类和运行类。
课程设计报告学院、系:专业:学生姓名:学号:设计题目:贪吃蛇游戏起迄日期:指导教师:发任务书日期: 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. 培养学生对计算机编程的兴趣,了解编程与数学、逻辑思维的关系。
技能目标:1. 培养学生运用编程语言(如Python)实现贪吃蛇游戏的能力。
2. 培养学生运用数学知识和逻辑思维解决问题的能力。
3. 提高学生的团队协作能力和沟通表达能力。
情感态度价值观目标:1. 培养学生对计算机科学的热爱,激发学生的创新精神。
2. 培养学生勇于尝试、克服困难的意志品质。
3. 培养学生遵守游戏规则,树立公平竞争的意识。
课程性质:本课程为信息技术与学科整合的实践课程,以贪吃蛇游戏为载体,培养学生的编程兴趣和逻辑思维能力。
学生特点:五年级学生对新鲜事物充满好奇心,具备一定的数学和逻辑思维基础,但编程经验尚浅。
教学要求:课程设计需兼顾趣味性与实用性,注重培养学生的动手实践能力和团队协作精神,将编程知识与实际操作相结合,使学生在实践中掌握知识。
通过分解课程目标为具体学习成果,便于后续教学设计和评估。
二、教学内容1. 游戏规则与玩法介绍:讲解贪吃蛇游戏的基本规则和操作方法,让学生了解游戏的核心玩法。
2. 编程语言基础:介绍Python编程语言的基本语法,如变量、数据类型、控制结构等,为学生编写贪吃蛇游戏打下基础。
3. 游戏编程逻辑:分析贪吃蛇游戏的编程逻辑,讲解如何使用Python实现游戏功能,包括蛇的移动、食物的生成、碰撞检测等。
4. 算法设计与优化:引导学生探讨贪吃蛇游戏中可能涉及的算法,如搜索算法、路径规划等,并针对游戏性能进行优化。
5. 实践操作:安排学生分组进行贪吃蛇游戏的编程实践,培养学生的动手能力和团队协作精神。
6. 作品展示与评价:组织学生展示各自的作品,进行互评和教师评价,总结优点与不足,提高学生的表达能力和批判性思维。
教学内容关联教材章节:1. 游戏规则与玩法介绍:教材第二章“计算机游戏概述”。
贪吃蛇课程设计一、课程目标知识目标:1. 学生能理解并掌握贪吃蛇游戏的基本规则和玩法。
2. 学生能够通过分析贪吃蛇游戏,了解方向键与蛇头移动的关系,掌握坐标系的基本概念。
3. 学生能够运用所学的编程知识,编写简单的贪吃蛇游戏程序。
技能目标:1. 学生能够运用计算机编程语言实现贪吃蛇游戏的控制,提高逻辑思维能力。
2. 学生通过团队协作,培养沟通与协作能力,共同完成贪吃蛇游戏的改进和优化。
3. 学生能够运用问题解决策略,调试和优化贪吃蛇游戏程序,提高解决问题的能力。
情感态度价值观目标:1. 学生在课程学习过程中,培养对计算机编程的兴趣,激发创新精神。
2. 学生在团队协作中,学会尊重他人,培养合作精神,提高团队意识。
3. 学生通过贪吃蛇游戏的实践,认识到编程与现实生活的联系,理解编程在生活中的应用,培养学以致用的意识。
课程性质:本课程为信息技术课程,以实践操作为主,注重培养学生的动手能力和逻辑思维能力。
学生特点:六年级学生具备一定的计算机操作基础,对游戏有较高的兴趣,喜欢动手实践。
教学要求:结合学生特点,注重理论与实践相结合,强调学生的动手实践,鼓励学生主动探索和团队协作。
在教学过程中,关注学生的个体差异,提供有针对性的指导。
通过课程目标的设定,使学生在知识、技能和情感态度价值观方面得到全面提升。
二、教学内容1. 导入新课:通过展示贪吃蛇游戏,引发学生对编程控制游戏的兴趣,为新课学习做好铺垫。
2. 知识讲解:a. 讲解贪吃蛇游戏的基本规则和玩法。
b. 分析贪吃蛇游戏中方向键与蛇头移动的关系,引入坐标系的概念。
c. 介绍编程语言中相关的控制语句和函数。
3. 动手实践:a. 指导学生使用编程软件,编写简单的贪吃蛇游戏程序。
b. 引导学生通过修改代码,实现贪吃蛇的移动、转向等功能。
c. 学生分组进行贪吃蛇游戏的改进和优化,培养团队协作能力。
4. 知识拓展:a. 介绍贪吃蛇游戏的进阶玩法,如:加速、穿墙等。
b. 讲解如何为贪吃蛇游戏添加音效和背景图片,提高游戏趣味性。
一、摘要随着计算机技术的飞速发展,图形界面编程在计算机科学中占据着越来越重要的地位。
贪吃蛇游戏作为一款经典的益智游戏,不仅能够锻炼玩家的反应能力,还能培养编程思维。
本次实训以贪吃蛇游戏为背景,采用Java编程语言和Swing图形用户界面库进行设计,实现了游戏的基本功能,并对游戏性能进行了优化。
二、引言贪吃蛇游戏是一款简单易玩、老少皆宜的益智游戏。
玩家通过控制蛇的移动,吃掉食物使蛇身变长,同时躲避墙壁和自身,最终达到游戏目标。
本次实训旨在通过贪吃蛇游戏的设计与实现,提高学生的编程能力、图形界面设计能力和团队协作能力。
三、游戏设计1. 游戏界面设计游戏界面采用Swing图形用户界面库进行设计,主要包括以下部分:(1)游戏区域:用于显示蛇、食物和墙壁,采用JPanel组件实现。
(2)游戏菜单:包括开始游戏、重新开始、退出游戏等选项,采用JButton组件实现。
(3)游戏得分:显示当前得分,采用JLabel组件实现。
2. 游戏逻辑设计游戏逻辑主要包括以下部分:(1)蛇的移动:根据玩家输入的方向键控制蛇头的移动,实现蛇的实时更新。
(2)食物的生成:随机生成食物,当蛇头吃到食物时,蛇身变长,同时增加得分。
(3)墙壁和自身碰撞检测:当蛇头触碰到墙壁或自身时,游戏结束。
(4)游戏得分:根据蛇头吃到的食物数量计算得分。
四、关键技术实现1. 蛇的移动蛇的移动通过监听键盘事件实现。
在键盘事件监听器中,根据按键的方向更新蛇头的坐标,然后重新绘制蛇身。
2. 食物的生成食物的生成采用随机算法实现。
首先生成一个随机坐标,然后判断该坐标是否在游戏区域内,如果不在则重新生成。
3. 碰撞检测碰撞检测包括墙壁碰撞和自身碰撞。
在蛇头移动时,判断蛇头的坐标是否超出游戏区域边界,或者与自身坐标相同,若满足任一条件,则游戏结束。
4. 游戏得分游戏得分通过计算蛇头吃到的食物数量实现。
每吃到一个食物,得分加1。
五、性能优化1. 游戏速度优化:通过调整蛇的移动速度和食物生成的速度,使游戏节奏更加紧凑。
c课课程设计贪吃蛇一、教学目标本课程的教学目标是让学生了解并掌握“贪吃蛇”游戏的基本原理和编程技巧。
知识目标包括理解贪吃蛇游戏的基本规则、掌握游戏编程的基本概念和方法。
技能目标则侧重于培养学生运用编程语言实现贪吃蛇游戏的能力。
情感态度价值观目标则是培养学生对计算机科学的兴趣,增强其创新意识和团队协作能力。
二、教学内容教学内容主要包括贪吃蛇游戏的基本原理、编程语言的选择和运用、游戏的实现和优化等。
具体包括以下几个部分:1.贪吃蛇游戏概述:介绍贪吃蛇游戏的基本规则和发展历程。
2.编程语言选择:介绍常用的编程语言,如Python、C++等,并分析其在贪吃蛇游戏编程中的优缺点。
3.游戏实现:讲解如何使用编程语言实现贪吃蛇游戏的基本功能,包括游戏界面、游戏逻辑、碰撞检测等。
4.游戏优化:介绍如何对贪吃蛇游戏进行性能优化和用户体验优化。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
讲授法用于讲解贪吃蛇游戏的基本原理和编程概念;案例分析法用于分析典型的贪吃蛇游戏案例,让学生了解游戏的实现过程;实验法则用于让学生动手编写和调试贪吃蛇游戏,提高其实际操作能力。
四、教学资源教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书用于为学生提供系统的理论知识;多媒体资料则用于辅助讲解和展示游戏案例;实验设备则用于让学生进行实际操作和调试。
同时,还可以利用网络资源,如在线编程平台,让学生在线编写和运行贪吃蛇游戏,提高其学习兴趣和主动性。
五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面客观地评价学生的学习成果。
平时表现主要评估学生在课堂上的参与程度、提问和回答问题的表现等。
作业方面,要求学生完成一定数量的编程练习和项目任务,以巩固所学知识。
考试则分为期中考试和期末考试,期中考试主要评估学生对贪吃蛇游戏原理的理解,期末考试则侧重于评估学生编程实现的能力。
六、教学安排本课程的教学进度共安排16周,每周2课时。
贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。
(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩三、需求分析3.1、程序功能贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
3.2、设计思想程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现与消失也是画矩形块和覆盖矩形块。
为了便于理解,定义两个结构体:食物与蛇。
3.3、流程图四、设计的具体实现(1)函数定义函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用#define N 200#define M 200#include"graphics.h"#include<stdlib.h>#include<stdio.h>#include<string.h>#include<iostream.h>#include<dos.h>#include<conio.h>#include <windows.h>#define LEFT 97//A#define RIGHT 100//D#define DOWN 115//S#define UP 119//W#define Esc 0x011bint i,key;int score=0;int gamespeed=250;//游戏速度可根据实际情况自行调整struct Food {int x;//食物的横坐标int y;//食物的纵坐标int yes;//判断是否要出现食物的变量}food;//食物的结构体struct Snake{int x[M];int y[M];int node;//蛇的节数int direction;//蛇的移动方向int life;//蛇的生命,0表示活着,1表示死亡}snake;void Init();//图形驱动void Close();//图形结束void DrawK();//开始画面void GamePlay();//玩游戏的具体过程void GameOver();//游戏结束void PrScore();//输出成绩(2)主函数main( )主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序void main()//主函数{Init();//图形驱动DrawK();//开始画面GamePlay();//玩游戏的具体过程Close();//图形结束}void Init()//图形驱动{int gd=DETECT,gm;initgraph(&gd,&gm," ");/*此处为turboc的路径,读者可以根据自己的电脑而改*/ cleardevice();}(3)画界面函数DrawK( )主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。
(完整word版)贪吃蛇实验报告.docx《计算机程序设计》课程设计报告课题名称贪吃蛇游戏班级学号姓名指导教师设计时间至设计地点常熟理工学院计算机科学与工程学院常熟理工学院计算机科学与工程学院目录1需求分析 (1)2系统分析和设计 (1)2.1数据结构的设计和选择的理由 (1)2.2系统模块划分和模块结构 (2)2.3流程图 (2)2.4数据类型、全局变量和函数说明 (3)3程序测试和运行结果 (4)4课程报告小结 (5)4.1分数重叠显示 (5)4.2速度太快 (5)4.3食物可能出现在蛇身上 (5)附录 A :程序源代码 (6)《 C 程序设计》课程设计1 需求分析【阐述课程设计应该完成的功能】使用键盘的上下左右,来控制蛇的运动方向,ESC 键退出,并显示得分。
2系统分析和设计2.1 数据结构的设计和选择的理由本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。
2.1.1 从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块组成,那么我们可以用一个 (x,y) 坐标为左上角的、固定宽度的正方形来表示一节蛇身。
为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表示。
下面以数组方式为例:struct Point {int x, y;}struct Point nodes[MAX_LENGTH];// 蛇身数组,MAX_LENGTH为最大蛇长贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点:1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用int direction; 表示 )2.运动时,蛇身后面一节移动到前面一节的位置。
当我们用nodes[0]表示蛇头的时候, nodes[1] 运动到 nodes[0]处; nodes[2] 运动到 nodes[1]处 ...。
3. 吃到一个食物以后,蛇身会增加一节。
即该数组中的有效数据个数加一。
C++程序课程设计贪吃蛇游戏姓名:XXXX学号:XXXXXX指导教师:XXXX提交日期:2XXXXX目录C++程序课程设计 ......................................................................................................... 1第一章 课题介绍 ...................................................................................................... 2第一章1.1选题背景 ................................................................................................................. 3 1.2关于编译软件 ......................................................................................................... 3 1.3关于兼容性 ............................................................................................................. 4第二章 设计概要 ...................................................................................................... 4第二章2.1程序功能简介 ......................................................................................................... 4 2.2程序流程 ................................................................................................................. 4第三章 游戏实现 ...................................................................................................... 5第三章3.1创建工程 ................................................................................................................. 5 3.2游戏界面控制 ......................................................................................................... 73.2.1墙、框体的绘制.......................................................................................... 73.2.2蛇身的绘制.................................................................................................. 83.2.3食物的绘制.................................................................................................. 9 3.3游戏控制 (11)3.3.1蛇的移动 (11)3.3.2蛇死亡的判断 (13)3.3.3消息窗口的弹出 (13)3.3.3.1开始消息框 (13)3.3.3.2关卡消息框 (14)3.3.3.3结束消息框 (15)3.3.4游戏音效 (16)第四章结果与讨论 (17)4.1程序运行 (17)4.2对源程序的改进 (18)4.3错误调试与分析 (18)4.3.1关于窗口的重画问题 (18)4.3.2关于双音轨的问题 (18)4.3.3程序的稳定性 (19)4.4课程设计心得与体会 (19)附录 (21)第一章课题介绍1.1选题背景蛇------传说中的圣灵之物,仰头为神、俯首为魔。
第一次课程设计报告一、题目:控制台小游戏1、课程内容利用面向对象的方法实现控制台贪吃蛇小游戏2、设计目标1.贪吃蛇:以经典贪吃蛇为基础参考2.游戏细节地图可以实现全空白(上下、左右可贯穿,为方便确定游戏区域,仍然会打印出墙,但蛇可以穿墙),也可以四面围墙,也可以自由加入预设的障碍物,玩家用键盘方向键“↑”、“↓”、“←”、“→”控制蛇上下左右移动。
每次吃掉一个食物,蛇的长度加一,并在地图上随机产生一个新食物。
食物分为普通食物("¥")和特殊食物(“$”),一般产生普通食物,每吃掉5个普通食物后,会产生一个限时食物,5秒之后会自动消失计分规则:每吃一个普通食物得一分,吃一个特殊食物得三分;实时得分会显示在地图右侧游戏可以自由设置难度,难度范围在1-10之间,难度系数越大蛇的移动速度越高,难度越大游戏还可以额外添加障碍物(以“#”表示障碍),障碍设置方法有手动设置和调动系统设置的障碍库两种。
手动设置障碍则需先输入设置障碍的个数然后逐个输入障碍坐标;可供调用的系统障碍库共有5个,通过输入1-5的数字进行获取有墙模式下蛇撞到墙或自撞或撞到障碍时死亡,无墙模式下蛇自撞或撞到障碍时死亡3、设计思路本游戏设计的主要思路和使用的数据结构是通过二维数组存储墙的位置信息,使用结构链表来描述蛇,链表的每个节点包含蛇的横纵坐标,食物则由产随机产生的两个数作为坐标产生。
通过比较蛇头和墙、食物、蛇身的坐标来确定是否撞墙、吃到食物和撞到自己。
具体实现可参见类的详细介绍。
设计墙模块、食物模块和蛇模块三个模块(类)。
墙模块可以输出墙的范围和管理障碍物,食物模块产生普通食物并记录吃掉的普通食物的量适时产生特殊食物,蛇模块可以实现蛇的向前移动、转向、吃到食物时伸长、记录分数、判断是否死亡等功能。
特别说明:在此程序的坐标体系中,x表示二维数组的行数,相应的应该是横坐标,y表示二维数组的列数,相应的应该是纵坐标二、主要的类墙模块功能:1. 创建一个二维数组作为游戏界面2. 初始化二维数组3. 画出墙壁4. 如果需要可以加入自由预设的障碍物或者调用障碍库,以“#”表示障碍物5. 提供对外接口6. ‘|’和‘—’分别代表侧面和上下面的墙壁。
目录1.课程设计目标 (3)2.课程设计任务和要求 (3)2.1课程设计内容 (3)2.2课程设计要求 (3)2.3课程设计环境 (3)3.课程设计方案 (3)3.1方案论证 (3)3.2程序整体设计说明 (3)3.3设计思绪 (4)3.4设计总体步骤图 (4)3.5设计具体实现 (5)4.程序测试 (8)4.1测试内容和结果 (8)4.2程序运行效果图 (9)5.课程设计总结 (10)6.参考文件 (11)附录源程序 (11)1.课程设计目标:●复习、巩固才C、C++基础知识,深入加深对VC技术了解和掌握;●课程设计为学生提供了一个既动手又动脑,独立实践机会,将书本上理论知识和实际有机结合起来,锻炼学生分析处理实际问题能力。
●培养学生在项目开发中团体合作精神、创新意识及能力2.课程设计任务和要求2.1 课程设计内容贪吃蛇游戏开发,首先它能够为大家提供一个目前比较流行休闲小游戏。
贪吃蛇是家喻户晓益智类小游戏,选择这个题目一是为了将自己所学知识加以利用,二是一直以来贪吃蛇这个游戏就深深地吸引着大家,它制作方法对于很多同学而言全部是很神秘。
所以我们期望经过这学期所学知识把它剖析开来,真真正正了解它本质和精髓。
在这次学习中我们将从实践和实际项目中提升自己编程能力。
所以决定选择这个题目作为VC课程设计。
最终一部分就是游戏模块划分,依据分析,贪吃蛇这个程序一共要实现以下多个功效,包含游戏方面开始游戏、暂停游戏和停止游戏,游戏设置(蛇颜色、食物颜色操作说明等)和积分。
2.2课程设计要求●对系统进行功效模块分析、控制模块分析正确,符合课题要求,实现对应功效;能够加以其它功效或修饰,使程序愈加完善、合理;●系统设计要实用,采取模块化程序设计方法,编程简练、可用,功效全方面;●说明书、步骤图要清楚;●统计设计情况(备查,也为编写设计说明书作好准备);2.3课程设计环境Windows7操作系统,VC6.0开发环境。
成都信息工程学院课程设计报告贪吃蛇游戏设计姓名:学号:姓名:学号:姓名:学号:专业:信息安全班级:提交日期:贪吃蛇游戏设计摘要本设计主要围绕贪吃蛇游戏展开。
众所周知,贪吃蛇游戏一直以来是比较流行的。
传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。
例如,最近流行的免费的3D版的贪吃蛇游戏,界面相当的美观,有很强的立体效果,真实感更强,食物也为立体的且颜色绚丽。
在3D版贪吃蛇游戏里面,墙壁是真实的墙壁,障碍物比较多,如树、土丘等。
此外,其功能更多更强,可以选择难度。
不过,总而言之,3D版与传统的贪吃蛇游戏有共性,即娱乐性与益智性。
这些也是贪吃蛇游戏的优点。
因我们水平有限,只能设计简单的贪吃蛇游戏。
不过,在功能上,比传统贪吃蛇游戏更丰富。
操作起来,显得更为灵活。
界面的颜色随机变换,不易使眼睛疲劳。
关键词:贪吃蛇小游戏简单灵活颜色多变目录论文总页数:12页第一章课题介绍 (1)1.1课题背景 (1)1.2关于编译软件 (1)1.3关于兼容性 (1)第二章课题分析 (1)2.1贪吃蛇游戏功能分析 (1)2.2游戏界面分析 (2)2.3游戏思路分析 (2)第三章设计的具体实现 (2)3.1系统组成模块结构及功能 (2)3.1.1 程序结构 (3)3.1.2 程序流程及效果 (3)3.2类的定义以及变量、函数的声明 (5)3.2.1 类的定义、函数的声明 (5)3.2.2 变量声明 (6)3.3主要功能实现代码 (7)3.3.1 初始化食物及随机生成食物 (7)3.3.2 蛇的移动 (7)3.3.2 判断是否撞墙或身体 (8)第四章问题解决及运行截图 (9)结论 (12)参考文献 (12)第一章课题介绍1.1 课题背景贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将我们自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。
我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。
虽然我们的编程能力不是很强,但是我们有信心,在这次学习中将从实践和实际的项目中提高自己的编程能力。
因此我们选定了这个题目。
1.2 关于编译软件本程序采用Microsoft Visual C++6.0的英文版本进行编译。
VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。
1.3 关于兼容性本程序经过调试,可以在XP系统下编译运行,也可以在Win7下运行,界面稍有不同,但不影响运行结果。
第二章课题分析2.1 贪吃蛇游戏功能分析该游戏和我们小时候玩儿的贪吃蛇大同小异:一条蛇在密闭的围墙内,围墙内会因难度系数不同而增设一些一些障碍物,在围墙内会随机出现一个食物,通过键盘上的四个光标键控制它相上下左右四个方向移动,当蛇头撞到食物时,则表示失误被吃掉,这时蛇身增长一节,同时获得10分,接着随机生成食物,等待被蛇吃掉。
如果在移动过程中撞到墙壁、障碍物或者自己的身体,游戏便结束。
2.2 游戏界面分析程序运行时,如图所示,边框有菱形的围墙,围墙内有不同等级的障碍物设置,美元符号‘$’代表食物。
2.3游戏思路分析用"⊙"代表蛇的身体,每吃掉一个事物,就增加一个"⊙","¤"代表头,"∧"代表尾,蛇头和蛇尾不能对换。
游戏开始时,初始化为蛇自行向下移动,当玩家按了有效键之后,便向指定方向移动,一步移动一节身体。
当蛇头位置碰撞到食物与之重复时,就新添加一个节点作为头。
关于蛇的生存:撞墙或者撞到自己的身体就视为生存期满,游戏结束。
关于判断:先判断蛇头移动方向的下一个节点地图坐标是否为1,若为1则撞上表示游戏结束;如果蛇头与自己身体的任一个节点相撞,则游戏结束。
关于过关:每吃一个食物得10分,每一关是200 * 关数为过关。
每关地图不一样,速度也不一样,难度递增。
第三章设计的具体实现3.1 系统组成模块结构及功能3.1.1 程序结构根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、以及停止游戏,音乐音效的添加与控制,游戏帮助提示与英雄榜的显示等等。
具体的程序结构如下面的图所示。
3.1.2 程序流程及效果根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。
贪吃蛇的内容主要包括:游戏开始,随机出现食物;按下Space键可以实现暂停功能;设置游戏等级,关卡数;游戏说明;可播放背景音乐和音效等等。
3.2 类的定义以及变量、函数的声明根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。
3.2.1 类的定义、函数的声明1.FOOD类:class food{public:/* 参数说明:int *nodes_x:当前蛇结点的所有x坐标int *nodes_y:当前蛇结点的所有y坐标int nodecount:当前蛇结点个数const int map[han][lie]:*/void createfood(int *nodes_x, int *nodes_y,const int map[han][lie],int nodecount);//随机生成食物int get_food_x();int get_food_y();void set_food_x(int x);void set_food_y(int y);void set_food_life(int life);private:static int food_x;static int food_y;static int food_life;//food 生命};2.MAP类:class map{public:void get_map( const int in_map[][40],int out_map[][40]);//获取地图数组void print_map( int key);//打印出地图void selectmap(int mapkey[han][lie]);private:};3.SNACK类:class snake{public:/*作用:创建蛇的对象*/snake(){};void Initi();//初始化蛇void snake_run();//蛇开始移动void inter_snake_life();//判断蛇是不是活着void inter_eat_food(char der);void movesnaketowhere(int count,char towhere);//控制蛇的移动方向void selectsnake_xy();//将蛇结点的横纵坐标取出来放到数组中。
//snake_node add_node(int node_x,int node_y);//返回结点对象void set_size();//设置size 大小private:int size;};4.SNACKNODE类:class snakenode{public:/* 函数作用:创建snake_node,并存入结点在屏幕上的的显示坐标*/ /*参数:int x:结点的横坐标*//*参数:int y:结点的纵坐标*/snakenode(){};snakenode(int x,int y){node_x=x;node_y=y;snake_node_count++;}/* 函数作用:返回数据对象x的值*/int get_node_x();void set_node_x( int x);void set_node_y( int y);/* 函数作用:返回数据对象y的值*/int get_node_y();static void set_node_count(int nodecount);/* 函数作用:返回数据对象snake_node_count的值*/static int get_node_count();private:int node_x;//存储snake_node结点在屏幕上显示的横坐标int node_y;//存储snake_node结点在屏幕上显示的纵坐标static int snake_node_count; //记录结点的个数};3.2.2 变量声明int *nodes_x://当前蛇结点的所有x坐标int *nodes_y://当前蛇结点的所有y坐标int nodecount://当前蛇结点个数const int map[han][lie]:int node_x;//存储snake_node结点在屏幕上显示的横坐标int node_y;//存储snake_node结点在屏幕上显示的纵坐标static int snake_node_count;//记录结点的个数int food::food_life=0;//初始值,生存flagint food::food_x=0;//初始化食物横坐标int food::food_y=0;//初始化食物纵坐标3.3 主要功能实现代码3.3.1 初始化食物及随机生成食物void food::createfood(int *nodes_x, int *nodes_y,const int map[han][lie],int nodecount){int i = 0;int x_food;int y_food;int mapflag = 1; //是否是地图障碍物的标志if(food_life == 0){do{do{srand((int)time(0)); //随机数初始化x_food = rand()%25;//产生25以内随机数y_food = rand()%80;//产生80以内随机数i++;if(i == nodecount){i = i - nodecount;}for(int j = 0; j < nodecount; j++){if((x_food != nodes_x[j] || y_food != nodes_y[j]) && y_food%2 == 0){food_x = x_food;food_y = y_food;mapflag = map[x_food][y_food/2];}}//mapflag=map[x_food][y_food/2];}while(mapflag);food_life=1;}while(!food_life);}gotoxy(y_food,x_food);printf("$");}3.3.2 蛇的移动void snake:: movesnaketowhere(int count,char towhere)//移动蛇的方向{//const int turntoX[2]={1,0};//蛇在x轴上移动//const int turntoY[2]={0,1};snakenode a;a=nodes[count-1];int x=a.get_node_x();int y=a.get_node_y();gotoxy(nodes[0].get_node_y(),nodes[0].get_node_x());//printf(" ");for( int j=0;j<count;j++){gotoxy(nodes[j].get_node_y(),nodes[j].get_node_x());printf(" ");}for(int i=0;i<count-1;i++){nodes[i]=nodes[i+1];nodes[i].set_node_x(nodes[i+1].get_node_x());nodes[i].set_node_y(nodes[i+1].get_node_y());}switch(towhere){case 'w':case 'W':x=x-1;a.set_node_x(x);break;case 'a':case 'A':y=y-2;a.set_node_y(y);break;case 'd':case 'D':y=y+2;a.set_node_y(y);break;case 's':case 'S':x++;a.set_node_x(x);break;default:;break;}nodes[count-1]=a;}3.3.2 判断是否撞墙或身体void snake::inter_snake_life()//判断蛇是不是撞墙或者撞到了自己的身体{snakenode snakenode;int count=snakenode.get_node_count();int node_x=nodes[count-1].get_node_x();//取蛇头的横坐标int node_y=nodes[count-1].get_node_y();//取蛇头的纵坐标int a=maparray[node_x][node_y/2];//获得当前蛇头所在位置的地图坐标所对应的值:a=0或者1。