搜档网
当前位置:搜档网 › ARM课程论文--贪吃蛇游戏的开发设计

ARM课程论文--贪吃蛇游戏的开发设计

ARM课程论文--贪吃蛇游戏的开发设计
ARM课程论文--贪吃蛇游戏的开发设计

、研究生课程论文

嵌入式系统设计与实例开发

课程设计论文

——基于μC /OS-II和ARM9的贪吃蛇游戏课程名称嵌入式系统设计

姓名白超群

学号1000201025

专业通信与信息系统

任课教师王佳斌

开课时间2011年6月

教师评阅意见:

论文成绩评阅日期

摘要:本课程论文介绍了运用C语言和API函数在ARM9平台上来实现贪吃蛇游戏,

并通过运用实时操作系统来简化嵌入式系统的开发。μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为简化。μC /OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。优点是稳定可靠、源码公开、便于移植和维护。

关键字:C语言、API函数、ARM9开发平台、μC/OS-II实时操作系统

一、实验目标和要求

掌握ADS1.2开发环境的使用。并初步掌握开发简单项目的能力

在开发板上实现贪吃蛇的小游戏,利用μC/OS-II的任务管理系统对于所有的任务进行管理调度。建立两个任务(不包括空闲任务),其中一个高优先级的任务一直实现按键扫描,以便获得键值;另一个低优先级的任务,实现游戏方向键定义和游戏运动画面等功能。

任务0一开始初始化液晶,显示游戏的开机画面,然后创建任务1并将任务1挂起,处于待开始阶段,然后建立一个死循环,用来不停地扫描键盘,实现游戏的退出、暂停、恢复游戏等功能。任务1则定义开始游戏后的方向键,其中扫描键盘之前建立一个邮箱,当有按键时将按键信息发送到邮箱,然后根据要实现的功能从邮箱中取回按键值实现游戏的控制功能,然后将邮箱清空。

任务1则创建贪食蛇游戏的运动轨迹,定义游戏中的边界,绘制贪食蛇游戏中的豆子,和定义游戏是否结束。游蛇运动采用了连续赋值的思路,首先开始游戏的时候绘制蛇头、蛇身、和蛇尾,并将蛇的坐标位置存入已定义好的数组中,以便实现蛇的动态。然后蛇头向前运动,并将原先的蛇头坐标赋给蛇身,蛇身原先的坐标赋给蛇尾,如果蛇身增长则把蛇尾原先坐标赋给增加的蛇身,然后用白色填充块将蛇尾填充掉。在任务1执行的时候任务0同在执行,同时为了保证按键的准确,按键的延时时间小于绘制游蛇的延时时间。

二、实验内容

1、“蛇”可以屏幕上以现有坐标及方向前进;

2、通过键盘可以控制“蛇”的行进方向;

3、“蛇”触及屏幕边框或设定的范围边界则游戏结束;

4、“蛇”可以吃掉在设定范围内随机产生的点,并得分;

5、可以计算“蛇”吃掉所有点的时间;

6、有多个关口;

7、可以累计成绩。

三、开发平台信息

1、μC /OS操作系统

μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。

μC /OS-II 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级。63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个,每个任务都有不同的优先级,用户在创建任务的时候定义该任务的优先级。uC/OS操作系统中每个任务可以有5种状态:休眠态、就绪态、运行态、等待或挂起状态、中断态,在任一个时候,任务的状态一定是这5种状态之一。任务在等待消息、邮箱或者信号量等事件的到来的时候会进入挂起状态,当任务接到消息以后,则处于就绪状态。

μC/OS-II的几大组成部分有核心部分(OSCore.c) 是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。任务处理部分(OSTask.c)完成任务的操作;包括任务的建立、删除、挂起、恢复等等。

时钟部分(OSTime.c)主要完成任务延时等操作。

任务同步和通信部分为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;μC/OS-II的软件体系结构如图1所示。从图1中可以看到,如果要使用μC/OS-II, 必须为其编写OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM三个文件。

2、开发板硬件资源

(1).S3C2410-S Core 小板:采用S3C2410X 处理器,64M NANDFLASH 64RAM。(2).Double 100M EtherNet 网卡:均由AX88796 构成,采用现有电路但分配不同地址。(3).4 HOST / 1 DEVICE USB 接口:主USB 口扩展为4 个,由AT43301 构成USB HUB,其中电源管理用MIC2525。USB 从口保持处理器本身的1 个。

(4).3 UART/IrDA:保持2 个RS232 串口,增加1 个RS485 串口,1 个IrDA 收发器,均从处理器的UART2 引出。

(5).168Pin EXPORT:有一个168Pin 扩展卡插槽,并去掉已经被主板上各模块占用的资源。网卡部分还在局部总线上,其余电路包括168Pin 扩展槽都在外部总线。(6).LCD:兼容多种LCD,可采用5 寸256 色屏或8 寸16bit 真彩屏,同时预留一个24bit 接口。可以支持板外8bit 或24bit 屏。

(7).TouchScr:采用ADS7843,预备了直接用2410 内部ADC 构成的转换电路接口(8).AUDIO:采用UDA1341,具有放音、录音等功能。

(9).PS2 KEYPAD:使用ATMEGA8 单片机控制2 个PS2 接口和板载17 键小键盘。两个PS2 可接PC 键盘和鼠标。

(10).LED:使用ZLG7290 只驱动8 只小数码管。同时可作IIC 总线实验。

(11).POWER SUPPLY、RESET、RTC 等必须资源。

(12).ADC:板载3 个电位器和选择跳线,同时在板上设模拟电压输入专用接口。

(13).IDE/CF 卡插座:支持2.5 英尺的笔记本硬盘读写和IDE 模式下的CF 卡读写。

(14).PCMCIA 和SD 卡插座:由EPM3128A100 CPLD 实现。

(15).IC 卡插座。由ATMEGA8 单片机控制。

(16).DC/STEP 电机。步进电机采用74HC573 扩展IO,软件形成时序来控制。同时剩余IO 可

以控制CAN 等电路,以节省CPU 的GPIO 资源。

(17).CAN BUS:设置1 个CAN 口,采用MCP2510 和TJA1050。

(18).Double DA:设置两个DAC 端口,采用MAX504 接SPI 总线。

(19).GPRS/GPS 扩展板不做在主板上,单独设计扩展板。注意GPS 的RS232 需要增加

MAX3232芯片来转换为TTL 才能引到168Pin 插座上。

3.移植μC/OS-II,实现贪吃蛇游戏

要移植一个操作系统到一个特定的CPU体系结构上并不是一件很容易的事情,它对移植者有以下要求:

1.对目标体系机构要有很深的了解;

2.对OS原理要有较深入的了解;

3.对所使用的编译器要有较深入的了解;

4.对需要移植的操作系统要有相当的了解;

5.对具体适用的芯片也要有一定的了解;

根据μC/OS-II的要求,移植μC/OS-II到一个新的体系结构上需要提供2个或3个文件:OS_CPU.H(C语言头文件)、OS_CPU_C.C(C程序源文件)及OS_CPU_A.ASM(汇编程序源文件)。

4、开发集成环境——ARM SDT 2.5 集成开发环境

ARM SDT 2.5 集成开发环境(ARM Project Manager)是ARM公司(为方便用户在ARM 芯片上进行应用软件开发而推出的一整套集成开发工具。ARM SDT可在Windows95、98、NT 以及Solaris 2.5/2.6、HP-UX 10上运行,支持最高到ARM9(含ARM9)的所有ARM处理器芯片的开发,包括StrongARM。

ARM SDT包括一套完整的应用软件开发工具:

1、*armcc ARM的C编译器,具有优化功能,兼容于ANSI C。

2、*tcc THUMB的C编译器,同样具有优化功能,兼容于ANSI C。

3、*armasm 支持ARM和THUMB的汇编器。

4、*armlink ARM连接器,连接一个和多个目标文件,最终生成ELF格式的可执行映像文件。

5、*armsd ARM和THUMB的符号调试器。

四、详细设计

1、设计思路

1、首先要显现游戏的初始界面,因此可以通过基本绘图A PI函数来实现,由于考虑到蛇运动时会转向,因此采用画矩形框来实现画蛇的身体,初始定义蛇身长度为三个矩形框,每个矩形框为10*10像素点(LC D为640*480),这样可以更容易的实现蛇在每个方向上的判断和实现。

2、通过按键消息可以实现键盘和蛇之间的互动,为了能准确记录每次给蛇的行进方向和擦除多余的蛇尾实现蛇的行进动作,采用两个数组来记录组成蛇身体的每个矩形框的位置,坐标设为l(代表矩形框左边的坐标:lef t)和u(代表矩形框上边的坐标:u p),则矩形框右边的坐标为(l+10),下边的坐标为(u+10)。当蛇前进一个矩形框时,即一步时,就把蛇头的坐标记录在数组中,并清除蛇尾。

3、因为蛇是有矩形框组成的,只要判断矩形框的位置即可判断蛇是否出界,用if(u<80||u>430||l<20||l>610)【范围已定】这条语句就可以了。

4、产生随机点可用r and()函数来实现,当蛇吃到食物是实际上是蛇头和食物矩形框重合,因此可用判断蛇头的坐标和食物的坐标是否相等来判断是否吃到食物,如果吃到食物就在产生一个随机食物,否则不产生。

5、对于时间的显示,可直接利用已有的头文件

#inc lud e"../u cos-ii/ad d/r tc.h"和相关函数

if(R tc_IsT ime Cha nge(RT C_S ECO ND_CHA NGE)) ti meu se++;来实现

6、设置多个关口,只要将延时时间改变就可以实现蛇速度的变化,又由于每关的关数不同,因此可以设定每关蛇吃到食物点不同。在本实验中蛇吃食物的点数为关数的两倍,而且后一关的速度比前一关的速度快。

7、成绩的记录只要设置一个变量,当吃到一个食物就加一,由于需要累积,因此在每关的开头并不需要将变量清零(除了第一关)。

8、关于显示时间及分数只要用API函数T ext O

2、程序核心思想

游戏开始后进入游戏界面。首先初始化蛇的坐标,食物的坐标。线程基本流程:判断是否是暂停阶段,是否有有退出按键,游戏是否有结束,如果都没有就执行,如果游戏结束了就重新游戏或者退出。

3、程序流程

本设计需要创建两个任务,任务流程和任务状态切换如下图。具体的任务流程和任务所要完成的功能如下:

在系统启动后,同时创建两个任务,任务一和任务二。任务一主要功能是等待键盘消息,有键盘消息的时候判断是什么键盘,并对相应的变量重新赋值。任务二主要功能是控制并在屏幕上显示蛇的移动,并完成对分数、游戏等级、和其他相关参数的记录和显示。任务一为主任务,在创建任务的时候,赋给它的优先级别比任务二高,所以任务一优先运行,任务二处于就绪状态,因为任务一主要是等待键盘消息,在无键盘消息的时候,任务一被挂起,这时候任务二进入运行状态。

程序流程图1:

是否有键盘消息任务一挂起

任务一,任务二就绪

任务二挂起任务一运行

任务二运行否

流程图2:

主要功能是控制并在屏幕上显示蛇的移动,并完成对分数、游戏等级、和其他相关参数的记录和显示。

4、程序下载与调试

把程序下载到试验箱中:

(1)执行菜单Project | Make 对工程进行编译连接。在出现的错误/警告窗口中选择某错误/警告信息,ADS 会自动打开相应源文件并用箭头指向出错的文本行。如果某个源文件被

初始化

游戏是否结束

调用食物产生程序

根据direction 变量移动蛇

是否吃到食物

是 蛇的节数加1

分数加1

加快蛇的移动

是否要产生食物

是否有返回按键

显示结束画面

修改,重新编译时ADS 会自动同步各文件的日期信息。

(2)在ADS 中执行菜单Project | Debug 启动ADS1.2 的调试工具AXD。

(3)在AXD 中执行菜单Options | Configure Target 对AXD 进行设置。选择ADP 即远程调试,点Configure 按钮进一步设置具体参数。

(4)点Select 按钮选择远程连接为ARM ethernet driver,点Configure 按

钮输入仿真器的IP 地址。如果用户使用的是并行口仿真器,请输入127.0.0.1 即可。

(5)等待程序装载完毕以后,通过Execute | Go 菜单以及Execute | Stop(或者工具栏中的相应按钮)运行或暂停程序。程序暂停后在窗口中将显示出程序暂停的位置。

(6)通过Execute | Step 菜单(或者工具栏中的相应按钮)可以单步运行程序。也可以使用Step In、Step Out 菜单命令进入或者跳出函数的调用。Run To Cursor 命令运行到光标位置。

(7)程序停止后可以通过Processor Views | Sources 菜单查看源文件,并可在适当位置按F9 设置端点。

(8)使用在Processor View 菜单下的Registers、Variables 和Memory 命令可以查看工作寄存器或者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。

五、实验结果与实验过程中出现的问题及解决办法

本程序能够完成设计目的的所有基本要求

不足之处:

(1)方向按键按下后,要有一定的延迟蛇才能对按键作出反应,这个延迟不是很明显,但是刚开始游戏的时候,总感觉不能刚好控制蛇吃到食物,需要稍微提早一些时间按下按键才能让蛇延目标方向移动。

这个不足的原理是因为每次按键按下,要等到下一次循环,蛇才能响应方向改变,而蛇控制的程序中每次循环中用到了比较多的循环语句,判断,跳转,每次程序循环所需要的时间比较长,所以感觉按键有一点延迟,但是这个延迟非常的小,并不明显。

解决方法:要优化蛇控制程序,简化程序过程。

(2)蛇的移动范围和游戏界面有些不一致,例如蛇会稍稍超出游戏界面的边框。这是因为蛇移动时候所用的坐标原点和画游戏界面所用的坐标原点不一样,在判断蛇是否超出边框时要注意计算在新坐标原点下,边框的位置,以便准确判断出蛇是否超出游戏界面。这个问题仅仅是画面上有点缺陷,不影响贪吃蛇的功能。

解决方法:要准确计算出游戏边框相对坐标原点的距离(像素点)。

六、总结

通过这门课程的学习与实践,对于嵌入式系统开发有了一定的了解,特别是在实验过程中遇到的各种问题,使我了解到,书本上的理论知识必须只有在具体的动手实践中才能真正理解和掌握。尤其是如何将理论思想落实到具体实践。当然在实验过程中也发现了自身的不足,开始对于程序的整个流程的把握不是很好,在老师和同学的指导和帮助下最终解决遇到的问题。通过此次设计,是我深深体会到团体的重要性,通过相互帮助和建议才能使设计得到实现和优化。对于我们工科学生来说,只有不断实践才能取得成效和进步。

七、参考文献

【1】王田苗.《嵌入式系统设计与实例开发——基于ARM微处理器与μC/OS-II实时操作系统(第3版)》清华大学出版社北京 2008年1月第3版

【2】季昱等编著.《ARM嵌入式应用系统开发典型实例》中国电力出版社

【3】侯殿有.《ARM嵌入式C编程标准教程》人民邮电出版社

【4】API函数 ---------------华大嵌入式实验资料 2010年4月

八、附录(部分API函数)

1、TextOut

定义:void TextOut(PDC pdc, int x, int y, U16 *ch, U8 bunicode, U8 fnt)

功能:在LCD 屏幕上显示文字

参数说明:

pdc:指向绘图设备上下文(DC)的指针

x,y:所输出文字左上角的屏幕坐标

ch:指向输出文字字符串的指针

bunicode:是否为Unicode 编码,如果是TRUE,表示ch 指向的字符串为

Unicode 字符集;如果为FALSE,表示表示ch 指向的字符串为GB 字符集。

fnt:指定字体的大小型号,可以是表1-1 数值中的一种或上表1-2 的数值:

2、MoveTo

定义:void MoveTo(PDC pdc, int x, int y)

功能:把绘图点移动到指定的坐标

参数说明:

pdc:指向绘图设备上下文(DC)的指针

x,y:移动画笔到绘图点的屏幕坐标

3、LineTo

定义:void LineTo(PDC pdc, int x, int y)

功能:在屏幕上画线。从当前画笔的位置画直线到指定的坐标位置,并使画笔停留在

当前指定的位置

参数说明:

pdc:指向绘图设备上下文(DC)的指针

x,y:直线绘图目的点的屏幕坐标

4、FillRect

定义:void FillRect(PDC pdc, int left,int top ,int right, int bottom,U32 DrawMode , COLORREF color)

功能:在屏幕上填充指定大小的矩形。

参数说明:

pdc:指向绘图设备上下文(DC)的指针

left:绘制矩形的左边框位置

right:绘制矩形的右边框位置

top:绘制矩形的上边框位置

bottom:绘制矩形的下边框位置

DrawMode:矩形的的填充模式和颜色,它的数值可以是表1-4 中的一种和

表1-5 中的或运算的结果

color:填充的颜色值,高8 位为空,接下来的24 位分别对应RGB 颜色的

8 位码。

5、ClearScreen

定义:void ClearScreen()

功能:清除整个屏幕的绘图缓冲区,即:清空LCDBuffer2

6、Int2Unicode

定义:void Int2Unicode(int number, U16 str[]);

功能:从int 型变量到Unicode 字符串的转换

参数说明:

number:被转换的整型数字

str:转换成的Unicode 字符串

7、CreateDC

定义:PDC CreateDC()

功能:创建一个绘图设备上下文(DC),返回指向DC 的指针

8、DestoryDC

定义:void DestoryDC(PDC pdc)

功能:删除绘图设备上下文(DC),释放相应的资源

参数说明:

pdc:指向绘图设备上下文(DC)的指针

9、Rtc_IsTimeChange

定义:U8 Rtc_IsTimeChange(U32 whichChange)

功能:判断所指定的某一个时间单位是否改变。

贪吃蛇源程序:

/***************************************************************************\ #说明: C main 函数,ucos-ii初始化等定义

---------------------------------- Bug --------------------------------------

---------------------------------- TODO list --------------------------------------

----------------------------------修正--------------------------------------

2004-5-12 创建

\***************************************************************************/

#include "../ucos-ii/includes.h" /* uC/OS interface */

#include "../ucos-ii/add/osaddition.h"

#include "../inc/drivers.h"

#include "../ucos-ii/Ustring.h"

#include "../inc/sys/lib.h"

#include "../src/gui/gui.h"

#include

#include

#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 test_Stack[400]={0, }; //test_Test_Task堆栈

void test_Task(void *Id); //test_Test_Task

#define test_Task_Prio 15

OS_STK new_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈

void new_Task(void *Id); //test_Test_Task

#define new_Task_Prio 14

/**************已经定义的OS任务*************

#define SYS_Task_Prio 1

#define Touch_Screen_Task_Prio 9

#define Main_Task_Prio 12

#define Key_Scan_Task_Prio 58

#define Lcd_Fresh_prio 59

#define Led_Flash_Prio 60

***************************************/////////

#define K_UP 56 //"8"

#define K_DOWN 50 //"2"

#define K_LEFT 52 //"4"

#define K_RIGHT 54 //"6"

#define K_RESET 46 //"."

#define K_ADD 43 //"+"

#define K_SUB 45 //"-"

///*****************事件定义*****************///

/////////////////////////////////////////////////////

// Main function. //

////////////////////////////////////////////////////

int main(void)

{

ARMTargetInit(); // do target (uHAL based ARM system) initialisation //

OSInit(); // needed by uC/OS-II //

OSInitUart();

initOSFile();

#if USE_MINIGUI==0

initOSMessage();

initOSList();

initOSDC();

initOSCtrl();

LoadFont();

#endif

loadsystemParam();

// create the tasks in uC/OS and assign increasing //

// priorities to them so that Task3 at the end of //

// the pipeline has the highest priority. //

LCD_printf("Create task on uCOS-II...\n");

OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_Stack[STACKSIZE-1], Main_Task_Prio);

OSTaskCreate(test_Task, (void *)0, (OS_STK *)&test_Stack[400-1], test_Task_Prio);

OSTaskCreate(new_Task, (void *)0, (OS_STK *)&new_Stack[STACKSIZE-1], new_Task_Prio);

OSAddTask_Init(1);

LCD_printf("Starting uCOS-II...\n");

LCD_printf("Entering graph mode...\n");

LCD_ChangeMode(DspGraMode);

OSStart(); // start the OS //

// never reached //

return 0;

}//main

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

PTextCtrl pTextCtrl;//文本框结构控件指针

#define ID_MainTextCtrl 101//文本框控件ID

#define RGB0 0x00111010 //蛇的颜色

#define RGB1 0x00ffffff //擦除蛇尾

enum funnum{m_pause,m_up,m_down,m_left,m_right}funnum=m_left;//功能指示键(停,上,下,左,右)

enum m_flag{up_down,left_right}m_flag=left_right;//当前蛇的运动方向标志

PDC pdc;

POSMSG pMsg=0;//定义消息结构

structRECT rect[1000];

structRECT rect1;//蛇尾参量

const int X=4,Y=3;//障碍物大小

structRECT block[2];//障碍物

int Q=0;//生成的豆子是否有效

int N;//记录蛇的节数

int i;//for循环

int j=0;//所吃豆子个数

int count_lever=1;//当前关卡-- --共5关

int TIME=60;//延迟时间

int minutes; //运行时间

int seconds;

const int D=10;//定义蛇的大小;

BOOLEAN K=FALSE;//是否有豆子产生

BOOLEAN Starting;//开始/暂停状态标志

BOOLEAN clc_screen;//是否已清屏

BOOLEAN T1_down;

BOOLEAN T2_down;

BOOLEAN T1_up;

BOOLEAN T2_up;

BOOLEAN T1_left;

BOOLEAN T2_left;

BOOLEAN T1_right;

BOOLEAN T2_right;

BOOLEAN if_restart;//是否重启

BOOLEAN me_self;//是否撞到自己

int bean_top,bean_left;//豆子坐标

int bean_right,bean_bottom;

int eara_top=50,eara_left=20;//窗体大小

int eara_bottom=430,eara_right=620;

int text_x=250,text_y=200;//显示gameover

int x3=20,y3=35;//文本坐标

int x2=20,y2=440;//

int x2_off;//偏移量

int x3_off;

int number=0;

U16 ch[5];//显示数据

U16 ch_mins[5];//分

U16 ch_doc[2]={':'}; //":"

U16 ch_secs[5];//秒

U16 uscore[10];

U16 utimer[10];

U16 uspeed[10];

U16 ulever[10];

U16 ugameover[20];

char score[10]="SCORE :";

char timer[10]="TIME :";

char speed[10]="SPEED :";

char lever[10]="LEVER :";

char gameover[20]="G A M E O V E R";

int sysnumber;

char sysfilename [ ]="/sys/ucos/fj/sys.dat";//打开的文件名

void LoadSysNumber()

{

FILE *pfile;//定义文件结构指针

pfile=fopen(sysfilename,"r");//打开文件

if(pfile==NULL){//打开文件失败

sysnumber=0;

return;

}

fread(&sysnumber,sizeof(int),1,pfile);//读文件

fclose(pfile);//关闭文件

}

void SaveSysNumber()

{

FILE *pfile;

pfile=fopen(sysfilename,"w");

if(pfile==NULL){

return;

}

fwrite(&sysnumber,sizeof(int),1, pfile);//写文件

fclose(pfile);

}

/*///////////////////////////////////////////////////////////////////////////////////////

******************************************************************************* *********

rect[0]表示蛇头; rect[1]表示蛇身; ....... ;rect[N]表示蛇尾;

******************************************************************************* *********///

U8 onKey(int nkey, int fnkey);

void start_again(void);//初始化为三节

void draw_snake(void);//绘制蛇

void pro_bean(void);//产生豆子7

void snake_mov(void); //移动

void eating_bean(void); //吃到豆子

void to_to(void);//扫描键盘

void game_over(void);//游戏结束

void get_score(void);//得分

void time_show(void);//显示运行时间

void speed_show(void);//速度

void text_show(void);//显示文本

void H_block(void);//障碍物

void lever_show(void);//关卡

void if_dead(void);

void Main_Task(void *Id) //Main_Test_Task

{

//POSMSG pMsg=0;//定义消息结构

pdc=CreateDC();

start_again();

//消息循环

restart:

//if_restart=FALSE;

for(;;){

pro_bean();

if_dead();

//if(if_restart)

//goto restart;

switch(funnum) {

case m_down:{

if (K==TRUE && rect[0].bottom==bean_top && rect[0].left==bean_left)//吃到豆子

eating_bean();

else

snake_mov();

if (rect[0].bottom==eara_bottom || T1_down || T2_down || me_self)

{

game_over();

start_again();

goto restart;

}

else

{

rect[0].top+=D;

rect[0].bottom+=D;

draw_snake();

}

break;

}

case m_up:{

if (K==TRUE && rect[0].top==bean_bottom && rect[0].left==bean_left)//吃到豆子

eating_bean();

else

snake_mov();

if (rect[0].top==eara_top || T1_up || T2_up || me_self)

{

game_over();

start_again();

goto restart;

}

else

{

rect[0].top-=D;

rect[0].bottom-=D;

draw_snake();

}

break;

}

case m_left:{

if (K==TRUE && rect[0].left==bean_right && rect[0].top==bean_top)//吃到豆子

eating_bean();

else

snake_mov();

if (rect[0].left==eara_left || T1_left || T2_left || me_self)

{

game_over();

start_again();

goto restart;

}

else

{

rect[0].left-=D;

rect[0].right-=D;

draw_snake();

}

break;

}

case m_right:{

if (K==TRUE && rect[0].right==bean_left && rect[0].top==bean_top )//吃到豆子

eating_bean();

else

snake_mov();

if (rect[0].right==eara_right || T1_right || T2_right || me_self)

{

game_over();

start_again();

goto restart;

}

else

{

rect[0].left+=D;

rect[0].right+=D;

draw_snake();

}

break;

}

case m_pause:

break;

}

}

}

U8 onKey(int nkey, int fnkey)

{

//pdc=CreateDC();

switch(nkey){

case '\r'://OK

if(!Starting){//处于开始模式

Starting=TRUE;

}

else{ //处于暂停模式

funnum=m_pause;

Starting=FALSE;

}

break;

case K_DOWN ://下移

if(m_flag==left_right)

{

funnum=m_down;

m_flag=up_down;

}

break;

case K_LEFT://左移

if(m_flag==up_down)

{

funnum=m_left;

m_flag=left_right;

}

break;

case K_RIGHT://右移

if(m_flag==up_down)

{

funnum=m_right;

m_flag=left_right;

}

break;

case K_UP://上移

if(m_flag==left_right)

{

funnum=m_up;

m_flag=up_down;

}

break;

case K_RESET://复位

start_again ();

//if_restart=TRUE;

break;

case K_ADD:

TIME-=50;

if(TIME<=0)

{

TIME=250;

}

speed_show();

break;

case K_SUB:

TIME+=50;

if(TIME>=500)

{

TIME=250;

}

speed_show();

break;

}

DestoryDC(pdc);//删除绘图设备上下文

return TRUE;

}

void start_again()//初始化为三节

{

//OSTimeDly(500);

ClearScreen();//清屏

clc_screen=TRUE;

me_self=FALSE;

funnum=m_left;

TIME=250;

m_flag=left_right;

minutes=0; //运行时间

seconds=0;

speed_show();

count_lever=1;

lever_show();

time_show();

N =3;//蛇的节数

j=0;//所吃豆子个数

K=FALSE;

rect[0].left =100; //绘制蛇头

rect[0].top =100;

for(i=0;i

{

rect[i+1].left=rect[i].left+D;

rect[i+1].top=rect[i].top;

}

for(i=0;i<=N;i++)

{

rect[i].right =rect[i].left+D;

rect[i].bottom=rect[i].top+D;

}

draw_snake();

get_score();

Starting=TRUE;

}

void draw_snake()//绘制蛇

{

for (i=0;i<=N;i++)

{

FillRect2(pdc,&rect[i],0x00 ,0x00000fff);

}

}

void pro_bean()//产生豆子

{

if (K==FALSE){

for(;;)

{

Q=0;

bean_top =rand()%38*D+eara_top;

bean_left=rand()%60*D+eara_left;

bean_bottom=bean_top+D;

bean_right=bean_left+D;

for(i=0;i<2;i++)

{

if( bean_top<=block[i].bottom || bean_bottom>=block[i].top || bean_left>=block[i].right || bean_right<=block[i].left)

Q+=1;

}

if (Q==2)

break;

}

FillRect( pdc,bean_left,bean_top,bean_right,bean_bottom,0x00,RGB0);

K=TRUE;

}

}

void snake_mov() //移动

{

分类垃圾桶底座热流道注射成型工艺及模具设计_毕业论文

分类垃圾桶底座热流道注射成型工艺 及模具设计 作者姓名:吴杰 专业名称:机械工程及自动化 指导教师:王二讲师

摘要 本毕业设计论文详细记录了分类垃圾桶底座热流道模具的设计全过程。 本文主要内容包括:垃圾桶的改进方案、制品的选材、制品的工艺分析、注射机的选择及校核、热流道浇注系统的设计、脱模机构的设计、成型零件和结构零件的设计以及相关尺寸的计算校核、排气系统及温控系统的设计、模具材料的选择等注射模设计中的关键问题。其中热流道浇注系统的设计是本次毕业设计的重点。 此外,本文中还包括一篇文献综述。 关键词:垃圾桶底座热流道注射机注射模具

Abstract The thesis of the graduate design notes the whole design processes of the hot runner mould for the rubbish bin pedestal in details. The thesis mainly includes: the improving method of the rubbish bin, the selecting material of the product, the technical analysis of the product, the option and check of the injector machine, the design of hot runner system, the design of the ejection mechanism, the design of the moulding,parts and makeup parts,as well as some key problem in injection mould design. Such as: the calculations of the related sizes, exhausting system and temperature control system, the choices of the mould materials. And the emphasis of this design is the design of the hot runner system. Besides, this thesis includes a literature summary. Key words:rubbish bin pedestal hot runner system injector machine injection mould

C语言贪吃蛇程序设计说明书

C语言贪吃蛇程序设计说明书 题目:贪吃蛇游戏 学校: 系别: 专业 班级: 姓名: 学号: 指导老师: 日期: 一、设计题目: 贪吃蛇是一款经典的休闲游戏,一条蛇在密闭的围墙内,随机出现一个食物,通过控制方向键操作小蛇不停的朝着食物前进,直到吃掉食物。每吃一个食物,小蛇都会长长一截,随之难度增大;当小蛇头撞到墙或自己时,小蛇死亡。 二、功能设计: 本游戏要求实现以下几个功能: (1) 用上、下、左、右键控制游戏区蛇的运动方向,使之吃食而使身体变长; (2) 用户可以调节蛇的运行速度来选择不同的难度; (3) 游戏分多个难度级别; (4) 用户可自选颜色; (5) 记录成绩前五名的游戏玩家; (6) 增加背景音乐; (7) 提高障碍物和游戏级别。 三、程序模块图: 贪吃蛇游戏 初画控设帮 始图制置助 模模模模化 块块块块

墙蛇食移食死变成等音 体身物动物亡长绩级效 2 四、算法流程图: 开始初始化界面和蛇身 放置食物 获取按键 开始运动 碰到边界 是 否 否蛇吃到食 是 蛇长大 蛇死亡是 继续 否 结束 3 五、函数原型与功能 1.主函数:void main() 启动程序,触动其他函数。 2.初始化:void init () 设置背景框大小、蛇体初始值,随机产生食物。 3.随机产生食物:void setfoodcrd()

设置食物生成坐标,0表示食物被吃。 4.画食物:void showfood() 用矩形框来画食物 5.画蛇:void showsnake() 根据蛇的坐标和节数,循环用矩形框来画蛇。 6.蛇移动:void snakemove() 根据按键,重设坐标 7.改变蛇的方向:void changeskdir() 响应用户的运动方向 8.判断蛇是否死亡:void judgeslod 判断蛇是否碰到自己或墙。 9.判断蛇是否吃到食物:void judgefood() 判断是否吃到食物,吃食后变0,蛇增长一节。 10.结束游戏:void gameover() 结束话语,并执行下一步。 六、基本代码 #include #include #include #pragma comment(lib,"Winmm.lib") #include "MyTimer.h" #define SIZEMAX 100 /*蛇最大长度*/ #define SPEED 100 /*初始速度*/ #define len 20 /*蛇宽度*/ #define lm 10 /*蛇每次移动距离*/ #define initlen 600 /*初始化窗口正方形的长度*/ #define Min_snakelen 2 /*蛇的最小长度*/ typedef struct { int x,y; }DIR; int snakelen=Min_snakelen; /*蛇的长度*/

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.sodocs.net/doc/0c1569946.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

贪吃蛇游戏开发设计

广州商学院 课程论文题目:贪吃蛇游戏开发设计 课程名称面对对象程序设计 考查学期2016/2017学年第 1学期姓名陈思明李权康 学号201506110047 201506110044 专业计算机科学与技术 指导教师包汉宗

移植性和平台无关性等优点,得到了广泛地应用,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的 接受和认可。 “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,四个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉 软件开发流程的目的。 关键词:贪吃蛇,Java,游戏

一、可行性分析 1.1经济可行性 游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件的水平的提高。游戏开发新技术层出不穷,经典游戏比比皆是,游戏这个名称一直存在于每个人的日常生活中。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色.而从技术方面来看,现在的java技术也融入了手机中。这些都为开发的这款贪吃蛇游戏提供了条件。 1.2技术可行性 本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。

智能垃圾箱创业计划书

毕业论文 智能垃圾箱项目策划书 专业名称:市场营销 班级: 111601 学生姓名:梁宝 学号: 201116060118 指导教师:李亨英 二零一五年六月

摘要 活垃圾造成的污染一直是中国最严重的社会公害之一。鉴于改革开放以来中国经济的高速发展、城市数量以及人口显著增加、城市规模和范围不断扩大、城市化进程的加快,中国城市生活垃圾产量不断增长,尤其是近年来,随着经济的迅猛发展,公共场合的垃圾不能很好的收集,造成垃圾污染环境和影响市容的问题也越来越严重。所以,把垃圾良好的收集、处理,防止环境污染,保护环境,维持生态平衡创造良好的市容市貌,已成为社会发展的一项重要举措。而就如何科学合理的收集和处理垃圾,垃圾箱的设计起着直接影响作用。于是基于调查的基础上,响应社会需求,我们设计的智能垃圾箱应运而生。 关键词:职能;垃圾箱;环保

Abstract Living garbage pollution has been one of the most serious social public hazards in China. Because of the high speed development of China's economy since the reform and opening up, number of cities and the population increased significantly, the urban scale and scope expands unceasingly, the speeding up of urbanization, city life garbage output growing in China, especially in recent years, with the rapid development of economy, public garbage cannot very good collection, environment and the city garbage pollution problem is becoming more and more serious. Good so, put the garbage collection, processing, to prevent environmental pollution, protect the environment and maintaining ecological balance to create a good districts, has become an important measure of social development. And how to scientific and reasonable collected and disposed of the rubbish, trash can play a direct impact on the design. Then based on the investigation on the basis of the response to the social needs, we design intelligent dustbin arises at the historic moment. Keywords:intelligent;dustbin ;environmental protection

STM32课程设计贪吃蛇

STM32大作业报告 学生: 学号: 所在院系:光电信息与计算机工程学院专业班级: 授课教师: 完成时间:2016年

前言 随着科学技术的不断进步,嵌入式近些年来逐渐兴起,其领域比较新,发展非常迅速,由于它属于新兴领域,接触的人并不是很多,但是嵌入式在各种电子设备上的应用越来越越广泛,并且各种电子设备也在朝着嵌入式微系统,智能化的方向前进。STM32系列是基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M核。作为21世纪的人才,为了与社会实际需要相衔接,提高我们的学习兴趣,利用STM32系列单片机进行了一次嵌入式系统设计。 摘要 在本次作业中采用STM32系列中的STM32F103RCT6微控制器芯片,采用ALIENTEK战舰STM32开发板,使用MiniSTM32开发板上的LCD 接口,来点亮TFTLCD,实现触摸屏功能。

一、课程设计任务要求 本次的课程设计目的是实现一个经典的贪吃蛇游戏,整个游戏实现功能分别为: 1、初始化程序。 2、随机红点、左转、右转、判断边框。 二、系统硬件设计 硬件设计原理图 根据此硬件设计图再结合软件设计就能做出此游戏。 三、系统软件实现 此次的课程设计在于开发个贪吃蛇游戏,其流程图如下图所示。

程序流程图 为方便介绍,此软件实现只给出主要程序部分: 1、本例程提供了硬件平台的初始化 GPIO是常规输入/输出端口,STM32F103RCT6有PA、PB、PC、PD、PE 共5个16位的GPIO。STM32的GPIO都可编程,具有很多复用功能。GPIO 可以配置为很多总模式,这些模式有:输入浮空、输入上拉、输入下拉、模拟输入、开漏输入、推挽输出、推挽复用、开漏复用。通过对GPIO寄存器编程,可以设置每个端口的工作模式。 24C02 EEPROM是开发板板载的2Kbit(256 个字节)EEPROM ,型号为:24C02,用于掉电数据保存。因为STM32 部没有EEPROM,所开发板外扩了24C02,用于存储重要数据,用来做IIC 实验,该芯片直接挂在STM32 的IO 口上。 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS 公司开发的两线式

《贪吃蛇游戏课程设计》报告资料整理

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路; (2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (4).完成课程设计报告,并进行答辩 三、需求分析 3.1、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

3.2、设计思想 程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。

3.3、流程图

四、设计的具体实现 (1)函数定义 函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用 #define N 200 #define M 200 #include"graphics.h" #include #include #include #include #include #include #include #define LEFT 97//A #define RIGHT 100//D #define DOWN 115//S #define UP 119//W #define Esc 0x011b int 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();//图形驱动

贪吃蛇游戏程序设计一课程设

贪吃蛇游戏程序设计__ 一、课程设.txt 同志们:别炒股,风险太大了,还是做豆腐最安全!做硬了是豆腐干,做稀了是豆腐脑,做薄了是豆腐皮,做没了是豆浆,放臭了是臭豆腐!稳赚不亏呀!贪吃蛇游戏程序设 计 一、课程设计任务贪吃蛇小游戏程序设计 二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合 理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩 三、需求分析3.1 、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 3.2 、设计思想程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。3.3 、流程图 开始 初始化界面和蛇身 放置食物 蛇开始运动 蛇吃到食? 蛇长大 蛇死亡? 继续? 退出界面 N Y N

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

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关于SNAKE 3.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;

java课程设计贪吃蛇游戏设计

前言 Java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。于是改造了Oak,以“Java”的名称正式发布。 Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

【完整版毕业论文】家用垃圾分类系统

家用垃圾分类系统 摘要 随着社会科学技术的飞速发展,人们的生活质量和速度也在不断提高。大多数传统的家用垃圾桶已经过时且缺乏新颖性,并且缺乏人性化设计。使用起来既不方便也不卫生,并且所有的生活垃圾和废物垃圾都被均匀地装载,没有经过仔细的分类。随之而来的是,清洁工的任务量正以几何速度增长,并且浪费大量时间检查垃圾的种类以及往返检查的过程中。在提倡效率和尽可能减少劳动时间的时代,人们越来越依赖于科学技术进步带来的便利。为了更好地解决此类问题,设计了一种以STC89C52单片机为核心的智能垃圾分类收集系统。该系统应由以下部分组成:语音识别模块会根据用户发出的指令自动对垃圾分类,AD收集语音信息,驱动相应的伺服电机根据垃圾类型旋转,打开相应的垃圾收集区域,并在十秒钟后自动重置。采用本系统不仅节省了大量的人力,物力和财力,而且有效地降低了垃圾进入站后的分类处理难度,具有较高的应用价值。 关键词:垃圾分类,单片机,语音识别,电机控制

DOMESTIC WASTE SORTING SYSTEM ABSTRACT With the rapid development of social science and technology, people's quality of life and speed are also constantly improving. Most of the traditional household trash cans are outdated and lack novelty, and they lack human design. It is neither convenient nor hygienic for people to use, and all domestic garbage and waste garbage are uniformly loaded without careful classification. What follows is that the task volume of cleaners is increasing at a geometric speed, and a lot of time is wasted in checking the types of garbage and on the way to and from the inspection. At the moment when efficiency is advocated and labor production time is reduced as much as possible, people increasingly rely on the convenience brought by scientific and technological progress. In order to better solve this kind of problem, an intelligent garbage separation and collection system with STC89C52 single-chip microcomputer as the core is designed. This system should be composed of the following parts. The voice recognition module automatically classifies the garbage according to the instructions issued by the user. AD collects voice information, drives the corresponding servo to rotate according to the type of garbage, opens the corresponding garbage collection area, and resets automatically after ten seconds. Adopting this system not only saves a lot of manpower, material resources and financial resources, but also effectively reduces the difficulty of sorting and processing after the garbage enters the station, and has high application value. KEYWORDS:waste sort,mcu,voice re cognition,motor control

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单班级0982011 学生刘某某 课程名称计算机课程设计 课题贪吃蛇游戏程序设计 设计要求 1.学习游戏设计有关知识。 2.设计贪吃蛇游戏程序。 3.调试并修改程序。 4.完成课程设计论文。 课题发给日期2011年6月25日 课程设计完成日期2011年7月09日 指导教师余某某 评语:

贪吃蛇游戏 学生姓名:刘某某班级:0882011 指导老师:余某某 摘要:编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。 作为一个完整的程序,必须考虑人机交流与用户体验。游戏的界面不能太丑,更不能连个简单的界面都没有。游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。游戏的美观是一方面,游戏的内在素质是另一方面。一个游戏的优劣,最终由玩家决定。在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。 关键词:贪吃蛇流程图c语言源程序

目录 1 前言 (1) 2 课设内容 (3) 2.1课设目的 (3) 2.2设计功能 (3) 2.3结构设计 (7) 3结论 (11) 参考文献 (15) 附录A (16)

1 前言 C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。作为一位当代的大学生更要很好的利用它,学好一门设计语言,实现学以至用。 制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。 通过游戏程序的设计训练可以提高自己的基本技能,更好地掌握字符串的表示方法和字符串函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。 C语言课程应注重边学边练,但由于课堂教学和实验的深度和广度有限,练习的深度也受到一定限制。为了弥补这一点,学校开设了本课程设计。它比教学实验复杂一些,涉及的深度广些并更加接近实用。目的是通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。 这次课程设计的主要特点如下: 1.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序 十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增

公共垃圾箱的设计

毕业论文(设计)任务书题目:垃圾箱的设计 院系:培黎工程技术学院 学生姓名:苏小霞 指导教师:于国红 起讫日期: 2011年12月至2012年5月

摘要 随着社会经济的日益发展,社会竞争也越发激烈,人们开始追求越发简单快捷的生活方式,生活垃圾、工业垃圾也因此增多,为了环保以及给人类提供方便,我特选此题。 由生活垃圾造成的污染一直是中国最严重的社会公害之一,如何科学合理的收集和处理垃圾,避免其对环境造成污染是长期以来难以解决的问题。各种各样的公共垃圾箱,毫不起眼而又不可或缺,它们都直接影响着垃圾回收的效率,也影响着我们赖以生存的环境。本文将分析现有公共垃圾箱的设计缺陷并对存放有害物质的地方和扔垃圾的入口处进行了一些改良的设计,希望通过发挥设计者的聪明才智,能为广大群众带来方便,让环境更加优美,社会更加和谐! 关键词:公共垃圾箱;回收;缺陷;有害;改良。

目录 0.1垃圾箱的特点及其应用…………………………………………………….. 0.2垃圾箱的分类……………………………………………………………………….. 0.3垃圾箱的发展……………………………………………………………………….. 第一章设计任务的提出……………………………………………………………….. 第二章设计调查…………………………………………………………………………….. 2.1垃圾箱的结构……………………………………………………………………….. 2.2垃圾箱的颜色……………………………………………………………………….. 2.3调查资料分析……………………………………………………………………….. 第三章垃圾箱设计思路与方向………………………………………………….. 第四章垃圾箱的人机工程学分析…………………………………………….. 4.1尺寸………………………………………………………………………………………….. 4.2形状………………………………………………………………………………………….. 4.3摆放………………………………………………………………………………………….. 第五章垃圾箱设计中的防破坏理念和无盖化启示....... 第六章设计构思…………………………………………………………………………….. 第七章设计方案分析…………………………………………………………………….. 7.1产品的功能分析…………………………………………………………………….. 7.2产品方案的形态分析…………………………………………………………….. 7.3产品方案的色彩分析……………………………………………………………..

C语言贪吃蛇实验报告

C语言程序设计报告 题目:贪吃蛇游戏的程序设计 院系:西语学院英语教育6班 : 学号:

1.1题目: 设计贪吃蛇小游戏 1.2题目的要求: 玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。 1.3设计的步骤: ●分析设计题目的要求,即需求分析。 ●总体设计,确定所需模块及模块间调用关系,定义系统中使用的数据类型。 ●详细设计,确定每个模块的功能,绘制主要函数的流程图。 ●编写程序代码,调试程序使其能正确运行。要求书写规范,注意采用缩进格式。函数 名、变量名要见文晓意,注释要简而不失、详而不缀。设计完成的软件要便于操作和使用。 ●程序测试,发现程序中存在的错误并改正。 ●完成报告。 2详细设计说明 2.1课程设计的要求: 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 ●收集资料,分析课题,分解问题,形成总体设计思路;

●对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具 体介绍; ●上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能 正常运行; ●完成课程设计报告。 2.2程序的功能: 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 2.3课程设计的思想: 程序关键在于表示蛇的图形及蛇的移动。用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇运动方向相反的方向键,此游戏就会暂停,再按想前的方向键才能继续游戏,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画一个圆点和覆盖原来的圆点。为了便于理解,定义两个结构体:食物与蛇。

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单 班级0982011 学生刘某某 课程名称计算机课程设计 课题贪吃蛇游戏程序设计 设计要求 1.学习游戏设计有关知识。 2.设计贪吃蛇游戏程序。 3.调试并修改程序。 4.完成课程设计论文。 课题发给日期 2011年6月25日 课程设计完成日期 2011年7月09日 指导教师余某某 评语:

贪吃蛇游戏 学生姓名:刘某某班级:0882011 指导老师:余某某 摘要:编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。 作为一个完整的程序,必须考虑人机交流与用户体验。游戏的界面不能太丑,更不能连个简单的界面都没有。游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。游戏的美观是一方面,游戏的内在素质是另一方面。一个游戏的优劣,最终由玩家决定。在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。 关键词:贪吃蛇流程图 c语言源程序

目录 1 前言 (1) 2 课设内容 (3) 2.1课设目的 (3) 2.2设计功能 (3) 2.3结构设计 (7) 3结论 (11) 参考文献 (15) 附录A (16)

1 前言 C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。作为一位当代的大学生更要很好的利用它,学好一门设计语言,实现学以至用。 制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。 通过游戏程序的设计训练可以提高自己的基本技能,更好地掌握字符串的表示方法和字符串函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。 C语言课程应注重边学边练,但由于课堂教学和实验的深度和广度有限,练习的深度也受到一定限制。为了弥补这一点,学校开设了本课程设计。它比教学实验复杂一些,涉及的深度广些并更加接近实用。目的是通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。 这次课程设计的主要特点如下: 1.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序 十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增

(完整版)智能垃圾桶检测系统毕业设计

基于物联网技术的垃圾智能管理系统的 设计与实现 摘要 本设计主要以单片机AT89S51为智能控制中心,结合GSM模块、重力检测模块、超声波检测模块及温度检测模块,及其外围辅助电路,构成了一个多种检测功能为一体的多功能垃圾管理系统。首先由各传感器检测重力、高度及温度信号并显示出来,当检测到的信号超出自身的设定值时,将其转化为电信号并传送给单片机处理,再由单片机将电信号传送给GSM模块进行打电话和发短信通知用户。该系统具有轻便灵巧、电路简单易实现,所使用的各类元器件灵敏度较高的特点。利用单片机编程,可使电路功能易于控制,从而实现了识别不同情况下具有智能的垃圾管理系统。 关键词:GSM;单片机;温度模块;超声波检测

Abstract This design mainly intelligent control of the single chip AT89S51 as the center, in combination with the GSM module, gravity detection module, ultrasonic detection module and temperature detection module, and its periphery auxiliary circuit, formed a variety of detection for the integration of multi-functional waste management system. First detected by the sensor of gravity, altitude and temperature signals, when the detected signal is beyond its own value, is transformed into electrical signals and transmitted to the single chip microcomputer processing, again by MCU will be routed to a GSM module calling and texting notifies the user. The system has a lightweight flexible, simple circuit to implement, of the various components used the characteristics of high sensitivity. Microcontroller programming, can make the circuit function is easy to control, so as to realize the recognition of different cases, the waste management system with smart. Key words:GSM; Single chip microcomputer; Temperature module;

相关主题