基于ucos的贪吃蛇游戏设计

合集下载

原创c语言贪吃蛇课程设计报告

原创c语言贪吃蛇课程设计报告

原创C语言贪吃蛇课程设计报告1. 引言贪吃蛇游戏是一款经典的电子游戏,它可以帮助玩家提高反应能力和思维敏捷性。

本文档旨在介绍一个基于C语言的贪吃蛇课程设计项目。

通过这个项目,我们可以学习C语言的基本语法、算法和程序设计方法。

2. 项目概述2.1 项目背景贪吃蛇游戏是一款非常受欢迎的经典游戏,现在几乎在所有平台都有相应的版本。

它的原理很简单:玩家控制一条蛇在屏幕上移动,蛇吃掉食物后身体长度增加,游戏结束条件为蛇撞到屏幕边缘或自己的身体。

通过这个项目的设计与实现,我们可以提高自己的编程能力,并加深对C语言的理解。

2.2 项目目标本项目的目标是设计并实现一个具有基本功能的贪吃蛇游戏。

主要功能包括:•蛇的移动控制:玩家可以通过键盘控制蛇的移动方向。

•食物的生成:在屏幕上随机生成食物,蛇吃掉食物后身体长度增加。

•碰撞检测:判断蛇是否撞到屏幕边缘或自己的身体,游戏在此情况下结束。

•分数统计:记录玩家的得分,并在游戏结束时显示最终得分。

3. 设计思路3.1 游戏界面设计游戏界面需要在控制台中实现,使用C语言的标准输入输出函数可以很方便地实现界面的绘制和更新。

我们可以使用二维数组来表示屏幕,每个元素代表一个方格,蛇和食物在屏幕上的位置可以通过修改二维数组的值来实现。

3.2 蛇的移动控制蛇的移动控制是游戏的核心功能之一。

我们可以使用一个链表数据结构来表示蛇的身体,每个节点代表一个蛇的身体节。

通过不断更新链表节点的位置,实现蛇的移动。

玩家可以通过键盘输入来控制蛇的移动方向。

3.3 食物的生成食物的生成是游戏的另一个重要功能。

我们可以随机生成一个二维数组的坐标,在该坐标上放置食物。

在蛇吃掉食物后,就可以在链表的末尾添加一个新的节点,使蛇的长度增加。

3.4 碰撞检测碰撞检测是判断蛇是否与屏幕边缘或自身的身体相撞的过程。

我们需要判断蛇的头节点是否与屏幕边缘或其他身体节点的位置重叠,如果重叠则游戏结束。

3.5 分数统计分数统计是记录玩家得分的功能。

c贪吃蛇游戏课程设计

c贪吃蛇游戏课程设计

c 贪吃蛇游戏课程设计一、教学目标本课程旨在通过学习贪吃蛇游戏的设计与制作,让学生掌握以下知识目标:1.了解贪吃蛇游戏的基本规则和原理;2.学习C语言的基本语法和数据结构;3.掌握使用C语言进行游戏编程的方法和技巧。

学生将能够运用所学知识,独立设计并编写一个简单的贪吃蛇游戏,实现游戏的基本功能,如控制蛇的移动、食物的生成与消亡、分数的统计等。

通过本课程的学习,学生将培养以下技能目标:1.熟练使用C语言进行编程;2.掌握贪吃蛇游戏的设计思路和实现方法;3.培养问题解决能力和创新思维。

在情感态度价值观方面,学生将:1.体验编程带来的成就感,提高对计算机科学的兴趣;2.学会合作与分享,通过小组讨论和协作完成游戏设计;3.培养勇于尝试、不断探索的学习精神。

二、教学内容本课程的教学内容主要包括以下几个部分:1.贪吃蛇游戏的基本规则和原理;2.C语言的基本语法和数据结构;3.游戏编程的基本方法和技巧;4.贪吃蛇游戏的的设计与实现。

具体的教学大纲安排如下:第1-2课时:介绍贪吃蛇游戏的基本规则和原理,让学生了解游戏的设计思路;第3-4课时:学习C语言的基本语法和数据结构,为学生编写游戏打下基础;第5-6课时:讲解游戏编程的基本方法和技巧,让学生掌握如何实现游戏功能;第7-8课时:分组进行贪吃蛇游戏的设计与实现,让学生动手实践,培养实际编程能力。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用以下教学方法:1.讲授法:讲解贪吃蛇游戏的设计原理和C语言的基本语法;2.案例分析法:分析典型的游戏编程案例,让学生了解实际编程方法;3.实验法:让学生动手实践,分组设计和实现贪吃蛇游戏;4.讨论法:鼓励学生相互交流、讨论,培养合作意识和创新能力。

四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》;2.参考书:《游戏编程入门》;3.多媒体资料:PPT课件、贪吃蛇游戏案例视频等;4.实验设备:计算机、编程环境。

c语言贪吃蛇课程设计报告

c语言贪吃蛇课程设计报告

C语言贪吃蛇课程设计报告摘要本报告介绍了一个基于C语言的贪吃蛇游戏的课程设计项目。

报告首先介绍了贪吃蛇游戏的背景和目标,然后详细说明了设计和实现过程中使用的数据结构、算法和关键技术。

最后,报告讨论了项目的测试结果和改进思路。

1. 引言贪吃蛇是一款经典的电子游戏,它的目标是控制一条蛇在有限空间内移动,吃掉食物并尽可能长大。

贪吃蛇游戏不仅有趣,而且对于初学者来说是一个很好的训练编程技巧的项目。

因此,在本课程设计中选择了贪吃蛇游戏作为项目的主题。

2. 设计目标本课程设计项目的主要目标是设计并实现一个使用C语言开发的贪吃蛇游戏。

具体目标包括: - 实现一个可用键盘控制的贪吃蛇游戏界面; - 设计合适的数据结构来表示贪吃蛇的状态; - 实现贪吃蛇的移动、吃食物、增长等基本功能; - 设计和实现合适的算法来检测和处理蛇与边界、蛇与自身以及蛇与食物的碰撞。

3. 设计与实现为了实现贪吃蛇游戏,我们使用了C语言作为开发语言,并采用了以下关键技术和数据结构:3.1 数据结构为了表示贪吃蛇的状态,我们设计了以下数据结构: - Point结构体用于表示二维坐标点,包括x和y坐标; - SnakeNode结构体用于表示贪吃蛇的每个节点,包括一个Point和指向下一个节点的指针; - Snake结构体用于表示整条贪吃蛇,包括一个指向头节点的指针和当前蛇的长度。

3.2 算法和关键技术为了实现贪吃蛇的移动、吃食物、碰撞等功能,我们采用了以下算法和关键技术: - 使用循环链表数据结构来表示贪吃蛇,使得贪吃蛇的移动和增长操作更高效;- 使用键盘输入来控制贪吃蛇的移动方向; - 使用随机数生成食物的位置; - 使用递归算法检测贪吃蛇与边界、自身以及食物之间的碰撞。

4. 测试与结果分析为了测试贪吃蛇游戏的功能和性能,我们设计了多个测试用例并进行了测试。

测试的结果表明我们的游戏实现了预期的功能,并且在性能方面表现良好。

然而,我们也发现了一些问题和改进的空间: - 贪吃蛇的移动速度过快,导致游戏难度较高; - 游戏界面设计简单,缺乏可玩性。

(完整版)基于C语言的贪吃蛇游戏开发与设计毕业论文

(完整版)基于C语言的贪吃蛇游戏开发与设计毕业论文

毕业设计说明书(论文)题目:基于C语言的贪吃蛇游戏开发与设计毕业设计说明书(论文)中文摘要毕业设计说明书(论文)外文摘要目录前言 (1)第一章概述………………………………………………………………………41.1中国手机游戏产业现状 (4)1.2中国手机游戏的产业局势及其种类的多元化 (5)1.3中国手机游戏的未来展望 (7)第二章开发工具的简介 (9)2.1 Visual C++6.0简介 (9)2.2 Visual C++6.0安装 (10)2.3 Visual C++ 6.0开发过程 (12)第三章需求分析 (13)3.1可行性分析 (13)3.2 功能性分析 (13)第四章概要设计 (16)4.1功能介绍 (16)4.2概要设计图 (16)第五章详细设计 (18)5.1程序设计分析 (18)5.2主要函数 (19)5.3主要代码 (19)5.4其他函数代码 (30)第六章运行与测试 (35)6.1 运行程序 (35)6.2程序的调试与测试 (37)第七章结论 (40)致谢…………………………………………………………………………………42参考文献 (43)附录A (44)前言C语言是目前世界上流行、使用最广泛的高级程序设计语言。

C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。

常用的编译软件有Microsoft Visual C++,Borland C++,WatcomC++ ,Borland C++, Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++, Lccwin32 C Compiler 3.1,Microsoft C,High C,等等......C语言的发展历史C语言的发展颇为有趣。

c贪吃蛇课程设计

c贪吃蛇课程设计

c 贪吃蛇课程设计一、课程目标知识目标:1. 学生能够理解“贪吃蛇”游戏的编程原理,掌握相关的编程知识和技能。

2. 学生能够运用所学的编程语言,独立编写出具有基本功能的“贪吃蛇”游戏。

3. 学生了解游戏设计的基本流程,掌握游戏设计中常用的数据结构和算法。

技能目标:1. 学生通过编写“贪吃蛇”游戏,提高逻辑思维和问题解决能力。

2. 学生能够运用编程技巧,优化游戏性能,使游戏更加流畅。

3. 学生掌握调试程序的方法,能够独立解决编程过程中遇到的问题。

情感态度价值观目标:1. 学生对编程产生兴趣,培养主动学习和探究的精神。

2. 学生在团队协作中,学会沟通、分享和合作,增强团队意识。

3. 学生通过游戏设计,培养创新意识和审美观念。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术学科,以实践操作为主,理论联系实际。

2. 学生特点:五年级学生对新鲜事物充满好奇,具备一定的逻辑思维能力和动手能力,但注意力容易分散,需要激发学习兴趣。

3. 教学要求:注重理论与实践相结合,以学生为主体,教师为主导,鼓励学生动手实践,培养创新精神和团队协作能力。

二、教学内容1. 理论知识:- 编程语言基础:变量、数据类型、运算符、条件语句、循环语句等。

- 游戏设计基本原理:游戏循环、用户输入、游戏状态更新、画面渲染等。

- 数据结构:数组、链表等。

- 算法:移动、转向算法,食物随机生成算法等。

2. 实践操作:- 使用编程软件进行“贪吃蛇”游戏编写,实现基本功能:如蛇的移动、吃到食物后身体增长、撞墙或撞到自己时游戏结束等。

- 游戏性能优化:提高游戏运行速度,优化用户体验。

- 界面设计:学习使用绘图函数,设计美观的游戏界面。

3. 教学大纲:- 第一课时:导入“贪吃蛇”游戏,介绍编程语言基础,让学生了解游戏设计的基本原理。

- 第二课时:学习数据结构及算法,编写游戏核心功能。

- 第三课时:实践操作,编写并优化“贪吃蛇”游戏,进行界面设计。

基于ucos的贪吃蛇游戏设计

基于ucos的贪吃蛇游戏设计
4
/////***************定义方向******************///////// #define LEFT 52 #define RIGHT 54 #define UP 56 #define DOWN 50 #define NODE_SIZE 5 #define SNAKE_MAX_LEN 4 #define BACKGROUND_COLOR 0x00FFFFFF #define CURRENT_COLOR 0x00000000 #define BEAN_X 30 #define BEAN_Y 20 #define WALL_X_MAX 450 #define WALL_X_MIN 20 #define WALL_Y_MAX 400 #define WALL_Y_MIN 20 *****************************事件定义****************************** OS_EVENT *keybox; PDC pdc; //定义绘图设备上下文结构 *************************游戏数据结构体的定************************** struct snake { int x[SNAKE_MAX_LEN]; int y[SNAKE_MAX_LEN]; int life; // 0,表示游戏结束 int length; // 数量表示节数,不超过 SNAKE_MAX_LEN int direction; // 表示方向,L R U D } Snake; struct bean { int x; int y; int count; } Bean; void drawNode(U32 color,int x,int y); void clearTail(int x,int y); void addNode(int x,int y); void drawWall(void)// 画墙 { int i; SetPenColor(pdc, 0x0000FFFF);//////设置画笔颜色为 for(i=18;i<=397;i+=10)/*画围墙范围是*/ { DrawRectFrame(pdc,i,25,i+10,34);

基于STM32--μCOS-II贪吃蛇的设计课程设计

基于STM32--μCOS-II贪吃蛇的设计课程设计

邯郸学院课程设计题目基于STM32--μC/OS-II贪吃蛇的设计基于STM32--μC/OS-II贪吃蛇的设计摘要进入新世纪的TFT液晶显示屏的技术和产业都取得了长足的发展,作为重要的现代信息,发布媒体之一TFT液晶显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。

伴随社会化信息的推进,TFT液晶屏技术也在不断地推陈出新,应用领域愈加广泛。

现基于STM32的TFT液晶显示可以更好的满足各种需求,也更便于操作和实现。

基于STM32在TFT液晶屏幕上可显示文本及图形,包括汉字和时钟显示。

关键词:TFT液晶显示 STM32开发板μC/OS-II 贪吃蛇目录摘要 (2)前言 (4)1背景介绍 (4)1.1选题背景 (4)1.2 MiniSTM32开发板介绍 (4)2系统硬件设计 (5)2.1开发板简介 (5)2.2 LED 灯 (7)2.3按键 (11)2.4 TFTLCD 模块 (12)3系统软件设计 (16)3.1 LED驱动 (16)3.2按键驱动 (16)3.3 TFT-LCD驱动 (18)3.4贪吃蛇实现C语言代码 (20)3.5 uC/OS-II软件设计 (26)结论 (30)参考文献 (31)前言目前已有超过85%的无线通信设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。

ARM在此方面的应用如:手提式计算机、移动电话、PDA等。

随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。

此外,ARM在语音及视频处理上进行了优化,并获得广泛支持。

UC/OS-II由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它适用于多种微处理器,微控制器和数字处理芯片(已经移植到超过100种以上的微处理器应用中)。

同时,该系统源代码开放、整洁、一致,注释详尽,适合系统开发。

UC/OS-II已经通过联邦航空局(FAA)商用航行器认证,符合航空无线电技术委员会(RTCA)DO-178B标准。

UCOSII+LPC2131+12864+1602+贪吃蛇游戏

UCOSII+LPC2131+12864+1602+贪吃蛇游戏

嵌入式期末考之贪吃蛇游戏机的设计一、项目总体说明1、用arm7系列型号为lpc2131的芯片设计一个贪吃蛇游戏机,其中还加入了UCOS II 操作系统。

2、用LCD12864来显示游戏的主界面,以及用LCD1602显示游戏开始的计时(Time)、游戏所得的分数(Score)和游戏通过的关数(Lv)。

其中“蛇”每吃的一个果实分数加1分,吃到2个果实游戏的关数加1,随着分数和关数的增加,“蛇”跑动的速度越快,“蛇”的长度也越长,游戏的难度也越大。

当“蛇”碰到游戏界面的边框时,游戏结束.3、用5个独立按键来控制“蛇”的上、下、左、右,以及游戏的重新开始。

二、项目硬件设计1、电源模块:用3.3V的直流电源。

2、控制模块:采用独立式按键,独立式按键电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O口线。

在按键数量较多时,I/O口浪费较大。

故只在按键数量不多时,采用这种按键。

3、显示模块:采用LCD12864和LCD1602,它是一种专门用于显示字母、数字、符号、字符等点阵式LCD。

其有显示质量高、数字接口、功耗低、体积小等优点。

图2.1 硬件模块划分三、项目软件设计1、本设计包含了Configure.h、Includes.H、Os_cfg.h、LCD1602.h、LCD12864.h、Font.h、Graphic.h等头文件。

以及包含了游戏显示信息GameInfo.c,按键处理KeyProcess.c,游戏处理GamePlay.c,游戏图形处理GameGraph.c,游戏动作处理GameActive.c等.c文件。

2、主函数main.c里面包括了系统初始化函数OSInit(),界面初始化函数vGUIInit(),游戏初始化函数vGameInit(),以及系统开始函数OSStart()。

3、UCOS II操作系统中,在游戏初始化函数vGameInit()中创建了一个游戏任务vTaskGame,优先级为6;然后在游戏任务vTaskGame中创建了按键任务TaskKey,优先级为10,以及显示游戏信息任务vTaskInfo,优先级为20.四、系统运行截图1、系统运行截图:2、“蛇”吃了一个果实之后,Score加1:3、“蛇”吃了2个果实后,Lv加1:五、软件源程序//*********************************main.c************************************* //*************************************************************************** //**<名称>UCOS+GUI(Greedy Snake) ** //**<说明>在LPC2131上使用的UCOS和12864的GUI,以及1602驱动。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OS_STK Main_Stack[STACKSIZE]={0, }; //Main_Test_Task 堆栈 void Main_Task(void *Id); //Main_Test_Task #define Main_Task_Prio 8 OS_STK Key_Stack[STACKSIZE]={0, }; //test_Test_Task 堆栈 void Key_Task(void *Id); //test_Test_Task #define test_Task_Prio 6
3
int key; key=KeyBoard_Read(0,FALSE); if(key==LEFT||key==RIGHT||key==UP||key==DOWN) { //Snake.direction=key; OSMboxPost(keybox,&key); } OSTimeDly(10); } } void addNode(int x,int y) { INT8U *key1,err; key1=OSMboxPend(keybox,0,&err); Snake.direction =*key1; switch(Snake.direction) { case LEFT: Snake.x[0]=Snake.x[0]-NODE_SIZE*2;break; case RIGHT:Snake.x[0]=Snake.x[0]+NODE_SIZE*2;break; case UP:Snake.y[0]=Snake.y[0]-NODE_SIZE*2;break; case DOWN:Snake.y[0]=Snake.y[0]+NODE_SIZE*2;break; } drawNode(CURRENT_COLOR, Snake.x[0], Snake.y[0]); }
***********************附录 main.c 代码**************************
#include"../ucos-ii/includes.h" /* uC/OS interface */ #include "../ucos-ii/add/osaddition.h" #include "../inc/drivers.h" #include "../inc/sys/lib.h" #include "../src/gui/gui.h"////////绘图 gui #include <string.h> #include <stdio.h> //#include <Ustring.h> #pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting ///******************任务定义***************/// OS_STK Main_Stack[STACKSIZE]={0, }; //Main_Test_Task 堆栈 void Main_Task(void *Id); //Main_Test_Task #define Main_Task_Prio 12 OS_STK Key_Stack[STACKSIZE]={0, }; //test_Test_Task 堆栈 void Key_Task(void *Id); //test_Test_Task #define test_Task_Prio 15
1
之间的通信。在使用消息邮箱前,首先要配置相关参数,修改相关 os_cfg.h 文 件:
#define OS_MBOX_EN #define OS_MBOX_ACCEPT_EN #define OS_MBOX_DEL_EN #define OS_MBOX_POST_EN #define OS_MBOX_POST_OPT_EN #define OS_MBOX_QUERY_EN 1 1 1 1 1 1
************************任务间通信****************************** 消息邮箱是 uC/OS-II 中的一种通信机制,可以使一个任务或者中断服务子 程序向另一个任务发送一个指针型的变量。通常该指针指向一个包含了“消息”的 特定数据结构。此游戏需要键盘给屏幕发送数据,因此采用邮箱机制完成两任务
2
Hale Waihona Puke { int i; ClearScreen(); //清屏 pdc = CreateDC();//创建绘图设备上下文 // 蛇初始化 drawWall(); initSnake(); // 豆子初始化 Bean.x = 80; Bean.y = 80; drawBean(); while (1) { clearTail(Snake.x[Snake.length-1], Snake.y[Snake.length-1]);// 消尾 for(i=Snake.length-1;i>0;i--) { Snake.x[i]=Snake.x[i-1]; Snake.y[i]=Snake.y[i-1]; } if(Snake.x[0]<45||Snake.x[0]>380||Snake.y[0]<45|| Snake.y[0]>430)//蛇是否撞到墙壁 { ClearScreen(); } addNode(Snake.x[0],Snake.y[0]); // 更新节点 if(Bean.x==Snake.x[0]Bean.y==Snake.y[0]&&(Snake.length<SNAKE_MAX_LE N))// 判断是否吃到豆子 { Snake.length = Snake.length + 1; for(i=Snake.length-1;i>0;i--) { Snake.x[i]=Snake.x[i-1]; Snake.y[i]=Snake.y[i-1]; } addNode(Snake.x[0],Snake.y[0]); drawBean(); } OSTimeDly(500); } } void Key_Task(void *Id) { while(1) {
基于 ucos 的贪吃蛇游戏设计
游戏简介: 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一 个食物, 通过按键盘四个光标键控制蛇向上下左右四个方向移动, 蛇头撞倒食物, 则食物被吃掉,蛇身体长一节,接着又出现食物,等待蛇来吃,如果蛇在移动中 撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 设计思路: 这个程序的关键是表示蛇的图形以及蛇的移动。 用一个小圆形表示蛇的一节 身体,身体每长一节,增加一个圆形块,蛇头用一节表示。移动时必须从蛇头开 始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键, 蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向 移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然 后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这是由于没 有清屏的原因, 原来蛇的位置和新蛇的位置差一个单位, 所以看起来多一节身体, 所以将蛇的最后一节用背景色覆盖。 食物的出现和消失也是画圆形块和覆盖圆形 块表示。 蛇的不停移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一 节的位置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐标为数组类 型,一组坐标对应一节的位置,假设有 i+1 节,由 0 到 i 节,第 i 节的坐标取第 i-1 节的坐标,第 i-1 节的坐标取第 i-2 节的坐标……直到第 1 节取第 0 节的坐 标。 而第 0 节的坐标, 即蛇头的坐标要往某个方向变化, 变化量为蛇每节的长度。 蛇的这种坐标轮换需要循环语句使其继续下去。 ************************任务划分及优先级定义******************** 此游戏已经成功移植到 S3C2410 开发板上运行, 是基于 ucos 系统的应用小 游戏。由此,将游戏划分成两个任务:屏幕显示任务、键盘扫描任务。先由键盘 扫描任务获取键值,控制显示任务绘制图形,由此屏幕显示任务优先级比键盘扫 描任务较低。任务控制块与优先级定义代码如下:
4
/////***************定义方向******************///////// #define LEFT 52 #define RIGHT 54 #define UP 56 #define DOWN 50 #define NODE_SIZE 5 #define SNAKE_MAX_LEN 4 #define BACKGROUND_COLOR 0x00FFFFFF #define CURRENT_COLOR 0x00000000 #define BEAN_X 30 #define BEAN_Y 20 #define WALL_X_MAX 450 #define WALL_X_MIN 20 #define WALL_Y_MAX 400 #define WALL_Y_MIN 20 *****************************事件定义****************************** OS_EVENT *keybox; PDC pdc; //定义绘图设备上下文结构 *************************游戏数据结构体的定************************** struct snake { int x[SNAKE_MAX_LEN]; int y[SNAKE_MAX_LEN]; int life; // 0,表示游戏结束 int length; // 数量表示节数,不超过 SNAKE_MAX_LEN int direction; // 表示方向,L R U D } Snake; struct bean { int x; int y; int count; } Bean; void drawNode(U32 color,int x,int y); void clearTail(int x,int y); void addNode(int x,int y); void drawWall(void)// 画墙 { int i; SetPenColor(pdc, 0x0000FFFF);//////设置画笔颜色为 for(i=18;i<=397;i+=10)/*画围墙范围是*/ { DrawRectFrame(pdc,i,25,i+10,34);
相关文档
最新文档