贪吃蛇毕业设计论文c(求C语言的贪吃蛇毕业论文毕业设计)

1.求C语言的贪吃蛇毕业论文、毕业设计

#include #include #include #include #include const int H = 8; //地图的高 const int L = 16; //地图的长 char GameMap[H][L]; //游戏地图 int key; //按键保存 int sum = 1, over = 0; //蛇的长度, 游戏结束(自吃或碰墙) int dx[4] = {0, 0, -1, 1}; //左、右、上、下的方向 int dy[4] = {-1, 1, 0, 0}; struct Snake //蛇的每个节点的数据类型 { int x, y; //左边位置 int now; //保存当前节点的方向, 0,1,2,3分别为左右上下 }Snake[H*L]; const char Shead = '@'; //蛇头 const char Sbody = '#'; //蛇身 const char Sfood = '*'; //食物 const char Snode = '.'; //'.'在地图上标示为空 void Initial(); //地图的初始化 void Create_Food(); //在地图上随机产生食物 void Show(); //刷新显示地图 void Button(); //取出按键,并判断方向 void Move(); //蛇的移动 void Check_Border(); //检查蛇头是否越界 void Check_Head(int x, int y); //检查蛇头移动后的位置情况 int main() { Initial(); Show(); return 0; } void Initial() //地图的初始化 { int i, j; int hx, hy; system("title 贪吃蛇"); //控制台的标题 memset(GameMap, '.', sizeof(GameMap)); //初始化地图全部为空'.' system("cls"); srand(time(0)); //随机种子 hx = rand()%H; //产生蛇头 hy = rand()%L; GameMap[hx][hy] = Shead; Snake[0].x = hx; Snake[0].y = hy; Snake[0].now = -1; Create_Food(); //随机产生食物 for(i = 0; i < H; i++) //地图显示 { for(j = 0; j < L; j++) printf("%c", GameMap[i][j]); printf("\n"); } printf("\n小小C语言贪吃蛇\n"); printf("按任意方向键开始游戏\n"); getch(); //先接受一个按键,使蛇开始往该方向走 Button(); //取出按键,并判断方向 } void Create_Food() //在地图上随机产生食物 { int fx, fy; while(1) { fx = rand()%H; fy = rand()%L; if(GameMap[fx][fy] == '.') //不能出现在蛇所占有的位置 { GameMap[fx][fy] = Sfood; break; } } } void Show() //刷新显示地图 { int i, j; while(1) { _sleep(500); //延迟半秒(1000为1s),即每半秒刷新一次地图 Button(); //先判断按键在移动 Move(); if(over) //自吃或碰墙即游戏结束 { printf("\n**游戏结束**\n"); printf(" >_<\n"); getchar(); break; } system("cls"); //清空地图再显示刷新吼的地图 for(i = 0; i < H; i++) { for(j = 0; j < L; j++) printf("%c", GameMap[i][j]); printf("\n"); } printf("\n小小C语言贪吃蛇\n"); printf("按任意方向键开始游戏\n"); } } void Button() //取出按键,并判断方向 { if(kbhit() != 0) //检查当前是否有键盘输入,若有则返回一个非0值,否则返回0 { while(kbhit() != 0) //可能存在多个按键,要全部取完,以最后一个为主 key = getch(); //将按键从控制台中取出并保存到key中 switch(key) { //左 case 75: Snake[0].now = 0; break; //右 case 77: Snake[0].now = 1; break; //上 case 72: Snake[0].now = 2; break; //下 case 80: Snake[0].now = 3; break; } } } void Move() //蛇的移动 { int i, x, y; int t = sum; //保存当前蛇的长度 //记录当前蛇头的位置,并设置为空,蛇头先移动 x = Snake[0].x; y = Snake[0].y; GameMap[x][y] = '.'; Snake[0].x = Snake[0].x + dx[ Snake[0].now ]; Snake[0].y = Snake[0].y + dy[ Snake[0].now ]; Check_Border(); //蛇头是否越界 Check_Head(x, y); //蛇头移动后的位置情况,参数为: 蛇头的开始位置 if(sum == t) //未吃到食物即蛇身移动哦 for(i = 1; i < sum; i++) //要从蛇尾节点向前移动哦,前一个节点作为参照 { if(i == 1) //尾节点设置为空再移动 GameMap[ Snake[i].x ][ Snake[i].y ] = '.'; if(i == sum-1) //为蛇头后面的蛇身节点,特殊处理 { Snake[i].x = x; Snake[i].y = y; Snake[i].now = Snake[0].now; } else //其他蛇身即走到前一个蛇身位置 { Snake[i].x = Snake[i+1].x; Snake[i].y = Snake[i+1].y; Snake[i].now = Snake[i+1].now; } GameMap[ Snake[i].x ][ Snake[i].y ] = '#'; //移动后要置为'#'蛇身 } } void Check_Border() //检查蛇头是否越界 { if(Snake[0].x < 0 || Snake[0].x >= H || Snake[0].y < 0 || Snake[0].y >= L) over = 1; } void Check_Head(int x, int y) //检查蛇头移动后的位置情况 { if(GameMap[ Snake[0].x ][ Snake[0].y ] == '.') //为空 GameMap[ Snake[0].x ][ Snake[0].y ] = '@'; else if(GameMap[ Snake[0].x ][ Snake[0].y ] == '*') //为食物 { GameMap[ Snake[0].x ][ Snake[0].y ] = '@'; Snake[sum].x = x; //新增加的蛇身为蛇头后面的那个 Snake[sum].y = y; Snake[sum].now = Snake[0].now; GameMap[ Snake[sum].x ][ Snake[sum].y ] = '#'; sum++; Create_Food(); //食物吃完了马上再产生一个食物 } else over = 1; }。

2.c语言实训贪吃蛇报告书

《高级语言程序设计》课程设计 实验报告

题目:贪吃蛇

专业:计算机

班级: 软件

姓名:

成绩:

指导教师:

完成日期:2008年09月23日

一、目的

1. 进一步掌握和利用C语言进行程设计的能力;

2、进一步理解和运用结构化程设计的思想和方法;

3、初步掌握开发一个小型实用系统的基本方法;

4、学会调试一个较长程序的基本方法;

5、学会利用流程图或N-S图表示算法;

6、掌握书写程设计开发文档的能力(书写课程设计报告);

二、内容与设计思想。

(1).系统功能与分析(填写你所设计的菜单及流程图)。

功能:进行贪食蛇游戏

分析:定义键盘方向键操作,随机数发生器产生食物,并分别利用函数判断贪食蛇的长度及游戏是否成功等.

并能够输入游戏成绩.

(2).数据结构

struct Food

{

int x;/*食物的横坐标*/

int y;/*食物的纵坐标*/

int yes;/*判断是否要出现食物的变量*/

}food;/*食物的结构体*/

struct Snake

}

int x[N];

int y[N];

int node;/*蛇的节数*/

int direction;/*蛇移动方向*/

int life;/* 蛇的生命,0活着,1死亡*/

}snake;

(3).模块设计

根据功能需要:

源文件 :#include <stdio.h>

#include <graphics.h>

#include <stdlib.h>

#include <dos.h>

函数名 功能

void main() 游戏主程序

void Init(void); 图形驱动

void Close(void); 图形结束

void DrawK(void); 开始画面

void GameOver(void); 结束游戏

void GamePlay(void); 玩游戏具体过程

void PrScore(void); 输出成绩

(3)总体设计思想:

利用图形驱动,制作美观的游戏界面.

通过随机函数产生随机数,控制游戏过程食物的出现.

定义键盘操作,控制游戏过程蛇的移动方向.

画出边界,并判断游戏是否结束.

统计游戏过程蛇吃的食物数量,计算并输出游戏成绩.

(4)调试过程: 测试数据及结果,出现了哪些问题,如何修改的

这里,你就写一下你平时出错的地方,与如何修改的.这里我也不好帮你写.

(5)程序有待改进的地方及本次实习的收获和建议

收获:加深认识了程序编译过程的中团队合作的重要性.

提高了自己的编程能力

(7)源程序清单(主要代码)

清单只要将上面的程序全部粘帖就可以了.

3.贪吃蛇游戏

// Snake.h : main header file for the SNAKE application

//

#if !defined(AFX_SNAKE_H__2EBD7F04_452B_11D7_B6CA_0050BAE90E03__INCLUDED_)

#define AFX_SNAKE_H__2EBD7F04_452B_11D7_B6CA_0050BAE90E03__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__

#error include 'stdafx.h' before including this file for PCH

#endif

#include "resource.h" // main symbols

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

// CSnakeApp:

// See Snake.cpp for the implementation of this class

//

class CSnakeApp : public CWinApp

{

public:

CSnakeApp();

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CSnakeApp)

public:

virtual BOOL InitInstance();

//}}AFX_VIRTUAL

// Implementation

//{{AFX_MSG(CSnakeApp)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

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

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SNAKE_H__2EBD7F04_452B_11D7_B6CA_0050BAE90E03__INCLUDED_)

这只是个一部分!以前我写过的!你还要写出相对的main和frm等等!

4.C语言课程设计 贪吃蛇

2.1程序功能介绍贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

2.2程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。2.2.1设计思路这个程序的关键是表示蛇的图形以及蛇的移动。

用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。

如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块2.2.2数据结构设计及用法说明 开始部分:游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。

标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。运行部分:作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。

当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。

第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;B:第四步,蛇碰到自己或墙壁,终止游戏。结束部分:游戏结束时,显示“GAME OVER”,已经是约定俗成的规律了,我的游戏也不例外。

除了游戏结束画面外,我还设置了一个游戏退出画面,“善始善终”嘛。有了上述的大致划分,我把整个程序划分成(13+2)个模块(其实就是函数)2.2.3程序结构(流程图)图2.1流程图依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。

C语言中数据结构集中体现在数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。

现在分析一下贪吃蛇游戏中的元素,继而得出与它们对应的在程序中的描述:蛇:基本描述:长度,颜色,位置。对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型; 位置--X,Y坐标。

增加的描述:蛇运动的方向,蛇的生命。对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。

方向只有四个方向:上下左右。可以设置与之对应的四个整型数:3、4、2、1。

生命就只有两种情况:死或生,对应0或1。食物: 基本描述:颜色,位置。

对应数据与数据类型:由于颜色设成固定的,所以不再讨论。位置—X、Y坐标。

增加的描述:食物的存在。对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。

只有两个值:0或1(没有食物或有食物)其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。

图2.2蛇的不停运动的关键算法的流程图2.2.4各模块的功能及程序说明主要模。

5.C语言课程设计 贪吃蛇

2.1程序功能介绍贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

2.2程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。2.2.1设计思路这个程序的关键是表示蛇的图形以及蛇的移动。

用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。

如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块2.2.2数据结构设计及用法说明 开始部分:游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。

标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。运行部分:作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。

当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。

第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;B:第四步,蛇碰到自己或墙壁,终止游戏。结束部分:游戏结束时,显示“GAME OVER”,已经是约定俗成的规律了,我的游戏也不例外。

除了游戏结束画面外,我还设置了一个游戏退出画面,“善始善终”嘛。有了上述的大致划分,我把整个程序划分成(13+2)个模块(其实就是函数)2.2.3程序结构(流程图)图2.1流程图依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。

C语言中数据结构集中体现在数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。

现在分析一下贪吃蛇游戏中的元素,继而得出与它们对应的在程序中的描述:蛇:基本描述:长度,颜色,位置。对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型; 位置--X,Y坐标。

增加的描述:蛇运动的方向,蛇的生命。对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。

方向只有四个方向:上下左右。可以设置与之对应的四个整型数:3、4、2、1。

生命就只有两种情况:死或生,对应0或1。食物: 基本描述:颜色,位置。

对应数据与数据类型:由于颜色设成固定的,所以不再讨论。位置—X、Y坐标。

增加的描述:食物的存在。对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。

只有两个值:0或1(没有食物或有食物)其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。

图2.2蛇的不停运动的关键算法的流程图2.2.4各模块的功能及程序说明主要模。

6.用c语言设计贪吃蛇游戏

// #include #include #include const int LENGTH = 40; const int WIDTH = 10; const int RANGE = 50; const int BeginLength = 5; const int speed = 300; #define SNAKE_COLOR RGB(176, 196, 222) #define BACKGROUND_COLOR RGB(255, 255, 0) #define DRAW_SNAKE(x) (x) * WIDTH enum IsSnake {isSnake, isNotSnake, isFood}; IsSnake map[LENGTH][LENGTH]; struct snake { int x; int y; snake* next; snake(int x, int y, snake* n = NULL) { this -> x = x; this -> y = y; next = n; } }; // snake typedef struct snake Snake; Snake* head = NULL; // queue Snake* tail = NULL; // queue int direct = 0; // direction RECT playground; // district TCHAR szAppName[] = TEXT("-*- snake game -* "); // The project name LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // message function void Initializer(); void Controller(Snake*,LPVOID); // control the snake void Move(HWND); void PutFood(); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, PSTR szCmdLine, int iCmdShow) { MSG msg; HWND hwnd; WNDCLASS wndclass; while (TRUE) { wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hbrBackground = CreateSolidBrush(RGB(255, 255, 255)); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hInstance = hInstance; wndclass.lpfnWndProc = WndProc; wndclass.lpszClassName = szAppName; wndclass.lpszMenuName = NULL; wndclass.style = CS_HREDRAW | CS_VREDRAW; if (!RegisterClass(&wndclass)) { MessageBox(NULL, TEXT("Please try again!!!"), szAppName, MB_ICONERROR); return 0; } break; } hwnd = CreateWindow(szAppName, TEXT("<^_^> Snake Game <^_^>"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, SW_NORMAL); UpdateWindow(hwnd); while (TRUE) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) break; TranslateMessage(&msg); DispatchMessage(&msg); } else { Move(hwnd); } } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HBRUSH hBrush; switch (message) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_CREATE: Initializer(); MoveWindow(hwnd, RANGE, RANGE, WIDTH * LENGTH + RANGE * 3, WIDTH * LENGTH + RANGE * 3, TRUE); return 0; case WM_KEYDOWN: switch (wParam) { case VK_LEFT: if (direct != VK_RIGHT) direct = VK_LEFT; break; case VK_RIGHT: if (direct != VK_LEFT) direct = VK_RIGHT; break; case VK_UP: if (direct != VK_DOWN) direct = VK_UP; break; case VK_DOWN: if (direct != VK_UP) direct = VK_DOWN; break; default: break; } return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); SetViewportOrgEx(hdc, RANGE, RANGE, NULL); hBrush = CreateSolidBrush(BACKGROUND_COLOR); SelectObject(hdc, hBrush); Rectangle(hdc,playground.left, playground.top, playground.right, playground.bottom); DeleteObject(hBrush); hBrush = CreateSolidBrush(SNAKE_COLOR); SelectObject(hdc,hBrush); for (int i = 0; i < LENGTH; ++i) { for (int j = 0; j < LENGTH; ++j) { if (map[i][j] == isSnake || map[i][j] == isFood) { Rectangle(hdc, DRAW_SNAKE(i), DRAW_SNAKE(j), DRAW_SNAKE(i + 1), DRAW_SNAKE(j + 1)); } } } DeleteObject(hBrush); EndPaint(hwnd, &ps); } return DefWindowProc(hwnd, message, wParam, lParam); } void Initializer() { for (int i = 0; i < LENGTH; ++i) { for (int j = 0; j < LENGTH; ++j) { map[i][j] = isNotSnake; } } for (i = 0; i < BeginLength; ++i) { if (i == 0) { head = tail = new snake(i, 0); } else { snake* temp = new snake(i, 0); tail -> next = temp; tail = temp; } map[i][0] = isSnake; } playground.left = playground.top = 0; playground.right = playground.bottom = WIDTH * LENGTH; direct = VK_RIGHT; PutFood(); } void PutFood() { srand(static_cast(time(NULL))); int x, y; do { x = rand() % LENGTH; y = rand() % LENGTH; } while (map[x][y] == isSnake); map[x][y] = isFood; } // put food void Move(HWND hwnd) { snake* temp; switch (direct) { case VK_LEFT: temp = new snake(tail -> x - 1, tail -> y); break; case VK_RIGHT: temp = new snake(tail -> x + 1, tail -> y); break; case VK_UP: temp = new snake(tail -> x, tail -> y - 1); break; case VK_DOWN: temp = new snake(tail -> x, tail -> y + 1); break; } Controller(temp,hwnd); //InvalidateRect(hwnd,NULL,FALSE); 。

7.C语言简易课程设计贪吃蛇

#define N 200 #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b int i,key; int score=0;/*得分*/ int gamespeed=50000;/*游戏速度自己调整*/ struct Food { int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/ struct Snake { int x[N]; int y[N]; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/ }snake; void Init(void);/*图形驱动*/ void Close(void);/*图形结束*/ void DrawK(void);/*开始画面*/ void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*/ /*主函数*/ void main(void) { Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/ } /*图形驱动*/ void Init(void) { int gd=DETECT,gm; initgraph(&gd,&gm,"c:\\tc"); cleardevice(); } /*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void) { /*setbkcolor(LIGHTGREEN);*/ 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(void) { randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ 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)/*可以重复玩游戏,压ESC键结束*/ { 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]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ 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;i595||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

8.贪吃蛇程序设计报告

原发布者:yue710218347

《Java程序设计》课程设计报告题目:贪吃蛇游戏的设计与实现指导老师:沈泽刚专业:计算机科学与技术班级:10-3姓名:梁潇一、课程设计目的贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。目的是更好地了解和掌握java语言,并熟练的运用java语言来实现项目。培养自主学习的能力。本软件在设计方面本着方便、实用及娱乐性高的宗旨,在外界进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。二、课程设计要求贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。三、课程设计报告内容(一)系统设计1、程序概述本程序是一个利用Java应用软件制作的贪吃蛇小游戏。在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点就是在退处程序后,下次打开程序时无法保存。2、游戏的主界面设计游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示

9.贪吃蛇C语言设计步骤

#define N 200#include #include #include #define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define Esc 0x011b int i,key; int score=0;/*得分*/ int gamespeed=50000;/*游戏速度可以自己调整*/ struct Food { int x; /*食物的横坐标*/ int y; /*食物的纵坐标*/ int yes; /*判断是否要出现食物*/ }food; /*食物结构体*/ struct Snake { int x[N]; int y[N]; int node; /*贪吃蛇的节数*/ int direction;/*蛇的移动方向*/ int life; }snake; void Init (void);/*图形驱动*/ void Close(void); void Drawk(void); void GameOver(void); void GamePlay(void); void PrScore(void);/*输出成绩*//*主函数*/ void main(void) { Init(); Drawk(); GamePlay(); Close(); } void Init(void) { int gd=DETECT,gm; initgraph(&gd,&gm,"c:\\tc"); cleardevice(); } void Drawk(void) { /*setbkcolor(LIGHTGREEN;*/ 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(void) { 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]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ 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;i595||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

贪吃蛇毕业设计论文c

转载请注明出处众文网 » 贪吃蛇毕业设计论文c(求C语言的贪吃蛇毕业论文毕业设计)

资讯

汽车保险方案的设计毕业论文(汽车保险制度的改革与影响论文)

阅读(75)

本文主要为您介绍汽车保险方案的设计毕业论文,内容包括汽车保险制度的改革与影响论文,关于中国汽车保险理赔的发展问题和解决办法的论文,关于汽车保险与理赔的论文怎么写。[摘要]: 随着私家车的增多,汽车保险也日趋红火。汽车此交通工具,以为

资讯

计量分析毕业论文结构(计量经济学论文)

阅读(74)

本文主要为您介绍计量分析毕业论文结构,内容包括计量分析的论文怎么写什么叫计量分析,计量经济学论文5000字以上,毕业论文的基本结构。[计量经济学论文] 河南省城镇居民消费水平模型分析 18 登出日期 : 2003。08。25 PM 03:44 写稿时间 : 没

资讯

北航毕业论文书脊(本科毕业论文的格式)

阅读(99)

本文主要为您介绍北航毕业论文书脊,内容包括在北京胶装毕业论文多少钱一本只是装订不打印,论文书脊如何用word制作,书脊应该与封面在同一页面上编辑吗,还是,本科毕业论文的格式。内容要求1.1论文题目论文题目应该简短、明确、有概括性。读

资讯

毕业论文选题和题目有啥区别(论文主题和论文题目有什么区别)

阅读(79)

本文主要为您介绍毕业论文选题和题目有啥区别,内容包括论文主题和论文题目有什么区别,毕业论文标题和题目的区别,毕业论文及毕业设计题目是什么意思。一个论文主题下可以有N个论文题目,就像是课题下的子课题一样,比如:以下的20个论文题目都隶

资讯

毕业论文句子颠倒顺序(论文检测颠倒语句可以防止重复吗)

阅读(73)

本文主要为您介绍毕业论文句子颠倒顺序,内容包括论文检测颠倒语句可以防止重复吗,研究生毕业论文查重,句子变换顺序还会被查出来吗,写毕业论文先后顺序是什么啊。以下是我过论文检测专业修改八年的经验总结与你分享,希望能帮到你:1:用自己的语

资讯

林业方面大学毕业论文(关于林业本科毕业论文)

阅读(81)

本文主要为您介绍林业方面大学毕业论文,内容包括关于林业本科毕业论文,南京林业大学本科毕业论文重复率要求是多少用的是什么数据库,浅谈我国林业可持续发展论文。·《浅谈林业的可持续发展》 ·《浅谈我国林业现状及整地、造林方法》 ·《

资讯

农村基层干部行政管理专业毕业论文(农村行政管理论文)

阅读(78)

本文主要为您介绍农村基层干部行政管理专业毕业论文,内容包括农村行政管理论文,求行政管理专业毕业论文题目,农村行政管理专业论文题目用“农村经济发展推进新农村建设”可以吗。行政管理论文-农村税改设计的缺陷和出路 作为中国经济体制改

资讯

本科毕业论文关于会计类(会计本科毕业论文写什么题目比较好)

阅读(76)

本文主要为您介绍本科毕业论文关于会计类,内容包括会计本科毕业论文写什么题目比较好,会计专业毕业论文题目类型,会计类本科论文什么范围的会计本科毕业论文比较好什么范围的会。提供一些会计专业毕业论文题目,供参考。 会计方面(含会计理论

资讯

毕业论文实验基础(毕业论文有何实验,实践或实习基础怎么填)

阅读(80)

本文主要为您介绍毕业论文实验基础,内容包括毕业论文有何实验,实践或实习基础怎么填,毕业论文研究基础写什么,毕业论文的实验方法。3.建筑物层高应结合建筑功能、使用要求和技术经济条件综合确定,并应符合有关建筑设计规范的规定;室内净高应

资讯

网络系统设计毕业论文(网络设计毕业论文)

阅读(76)

本文主要为您介绍网络系统设计毕业论文,内容包括网络设计毕业论文,我要写一篇叫基于路由器的网络系统设计的毕业论文,请问各位大神要,计算机网络技术毕业论文5000字。摘 要随着互联网应用范围不断扩大,网络包含的信息资源日益增多,互联网用户

资讯

汽车保险方案的设计毕业论文(汽车保险制度的改革与影响论文)

阅读(75)

本文主要为您介绍汽车保险方案的设计毕业论文,内容包括汽车保险制度的改革与影响论文,关于中国汽车保险理赔的发展问题和解决办法的论文,关于汽车保险与理赔的论文怎么写。[摘要]: 随着私家车的增多,汽车保险也日趋红火。汽车此交通工具,以为

资讯

计量分析毕业论文结构(计量经济学论文)

阅读(74)

本文主要为您介绍计量分析毕业论文结构,内容包括计量分析的论文怎么写什么叫计量分析,计量经济学论文5000字以上,毕业论文的基本结构。[计量经济学论文] 河南省城镇居民消费水平模型分析 18 登出日期 : 2003。08。25 PM 03:44 写稿时间 : 没

资讯

北航毕业论文书脊(本科毕业论文的格式)

阅读(99)

本文主要为您介绍北航毕业论文书脊,内容包括在北京胶装毕业论文多少钱一本只是装订不打印,论文书脊如何用word制作,书脊应该与封面在同一页面上编辑吗,还是,本科毕业论文的格式。内容要求1.1论文题目论文题目应该简短、明确、有概括性。读

资讯

毕业论文选题和题目有啥区别(论文主题和论文题目有什么区别)

阅读(79)

本文主要为您介绍毕业论文选题和题目有啥区别,内容包括论文主题和论文题目有什么区别,毕业论文标题和题目的区别,毕业论文及毕业设计题目是什么意思。一个论文主题下可以有N个论文题目,就像是课题下的子课题一样,比如:以下的20个论文题目都隶

资讯

毕业论文句子颠倒顺序(论文检测颠倒语句可以防止重复吗)

阅读(73)

本文主要为您介绍毕业论文句子颠倒顺序,内容包括论文检测颠倒语句可以防止重复吗,研究生毕业论文查重,句子变换顺序还会被查出来吗,写毕业论文先后顺序是什么啊。以下是我过论文检测专业修改八年的经验总结与你分享,希望能帮到你:1:用自己的语