贪吃蛇代码-贪吃蛇的围墙代码怎么?贪吃蛇的围墙代码怎么写

哈哈……避邪[哈哈]

贪吃蛇在哪下载啊

我的工享里有

在dos环境下c语言编程编一个贪吃蛇游戏

程序设计及说明

该类规定游戏的范围大小。

Snake

用该类生成一个实例蛇

snake

该类用于实现对蛇的操作控制,即蛇头方向的上下左右的移动操作。

、食物类(

该类是游戏过程中食物随机产生的控制和显示。

、判断死亡(

该类是对游戏过程中判断玩家操作是否导致蛇的死亡,其中包括蛇头咬食自己身体和蛇头是否触

及游戏“边墙”。

、蛇结点(

SnakeNode

该类是蛇吃下随机产生的食物从而增加长度的控制类,其中包括蛇长度增加和尾部的变化。

、计分统计(

Score

该类由于玩家的游戏成绩记录,及游戏结束时的得分输出。

部分函数及说明

1.Char menu();

用于玩家选择的游戏速度,返回一个

2.DELAY(char ch1);

用于控制游戏速度

3.void drawmap();

绘制游戏地图函数

void menu()

游戏帮助信息的输出

部分类细节解说

、蛇的构建

Snake

class Snake{

public:

int x[n]

int y[n];

int node;

int direction;//

蛇运动方向

life;//

蛇生命,判断死亡

、随机食物

Food

rand(

)函数进行随机数产生,然后就行坐标定位

void Food(void){

int pos_x = 0;

int pos_y = 0;

pos_x = rand() % length;//x

坐标的确定

pos_y = rand() % (width-1);//y

坐标的确定

、蛇头方向确定

switch

语句进行方向确定

switch(){

case VK_UP:{

OutChar2.Y--;

y--;

break;

case VK_LEFT:{

OutChar2.Y++;

y++;

break;

case VK_DOWN:{

OutChar2.X---;

x--;

break;

case 'VK_RIGHT:{

OutChar2.X++;

x++;

break;

#include

#include

#include

#include

#include

using namespace std;

int score=0,t=300,f=1;//

得分与时间间隔

(控制贪吃蛇的速度)

double ss=0,tt=0;//

统计时间所用参数

class Node

Node(): x(0), y(0), prior(0), next(0) { }

int x;

int y;

Node *prior;

Node *next;

friend class Snake;

class Snake

public:

Snake();

~Snake();

void output();

void move();

void change_point(char);

private:

Node *head;

Node *tail;

enum p{ UP

, RIGHT, DOWN, LEFT }point; //

int food_x, food_y; //

食物的坐标

static const int N = 23;

int game[N][N];

void add_head(int, int); //

添加坐标为

void delete_tail(); //

删除最后一个结点

void greate_food(); //

void gotoxy(int, int);

void menu();

游戏操作菜单

int main()

system("color a");

窗口颜色为黑(背景)淡绿(文字)

cout<

for(int i=0;i<23;i++)

{char star[]={"Welcome To Snake Game!"};

cout<

Sleep(170);}

cout<

祝你好运!

"<

Sleep(3000);

if(kbhit()){char kk=getch();if(kk==9)f=5;} //

如果执行,吃一颗星加

system("cls");

Snake s;

menu();

system("color 1a");

s.output();

while (true)

char keydown = getch();

if(keydown==32)getch();

if(keydown==27)return 0;

s.change_point(keydown);

while (!kbhit())

{clock_t start,end;start=clock();

s.move();

s.output();

Sleep(t);

end=clock();tt=(double)(end-start)/CLOCKS_PER_SEC;ss+=tt;

cout<

"<

谁有贪吃蛇_vs2008 C++代码啊?

使用链表完成贪吃蛇游戏的代码非常适合,贪吃蛇的每次移动可以看做链表的头部插入和尾部删除

具体代码如下

#include "snake.h"

#define UP_CMD 'w'

#define DOWN_CMD 's'

#define LEFT_CMD 'a'

#define RIGHT_CMD 'd'

#define EAT_FOOD 0x02 //吃到食物

#define EAT_SELF 0x04 //迟到自己

#define EAT_NONE 0x05 //无吃到

typedef char DIRECTION;

class SnakeNode

private:

COORD pos; //节点坐标

SnakeNode *next;

public:

static COORD foodxy; //食物坐标

static SnakeNode *head; //头部

static DIRECTION direction;//方向

static int speed; //移动速度

static void food(); //产生食物

static void create(); //产生蛇

static void free(); //销毁

static int move(); //移动

static void getcmd(DIRECTION d); //改变方向

COORD SnakeNode::foodxy;

SnakeNode* SnakeNode::head = NULL;

DIRECTION SnakeNode::direction = RIGHT_CMD;//方向

int SnakeNode::speed = 400;//方向

void SnakeNode::free()

SnakeNode *p,*q;

p = head;

while(p)

q = p->next;

delete p;

p=q;

void SnakeNode::getcmd(DIRECTION d)

switch(d)

case 'w':case 'W':

if(direction!='s') direction='w';break;

case 's':case 'S':

if(direction!='w') direction='s';break;

case 'a':case 'A':

if(direction!='d') direction='a';break;

case 'd':case 'D':

if(direction!='a') direction='d';break;

void SnakeNode::food()

rand:

srand(GetTickCount());

foodxy.X=(rand()%38)*2;

foodxy.Y=rand()%25;

SnakeNode *p = head;

while(p!=NULL)

if(p->pos.X==foodxy.X&&p->pos.Y==foodxy.Y)

goto rand;

break;

p = p->next;

gotoxy(foodxy.X,foodxy.Y);

printf("☆");

void SnakeNode::create()

SnakeNode *p = new SnakeNode;

head = p;

int i;

for(i=26;i>=20;i-=2)

p->pos.X=i;

p->pos.Y=10;

gotoxy(i,10);

cout

if(i==20)

p->next = NULL;

p = p->next;

food();

int SnakeNode::move()

SnakeNode *newhead = new SnakeNode;

int cX,cY;

switch(direction)

case 'w':

cX = 0; cY = -1;

}break;//创建一个新头部,删除尾巴

case 's':

{

cX = 0; cY = 1;

}break;

case 'a':

{

cX = -2; cY = 0;

}break;

case 'd':

{

cX = +2; cY = 0;

}break;

newhead->pos.X = head->pos.X + cX;

newhead->pos.Y = head->pos.Y + cY;

newhead->next = head;

head = newhead;

if(head->pos.Y<0)head->pos.Y=24;

if(head->pos.Y>24)  head->pos.Y=0;

if(head->pos.X<0)head->pos.X=78;

if(head->pos.X>78)  head->pos.X=0;

//判断是否咬到自己

SnakeNode *q = head->next;

while(q!=NULL)

if((q->pos.X==head->pos.X)&&(q->pos.Y==head->pos.Y))

free();

return EAT_SELF;

q=q->next;

gotoxy(head->pos.X,head->pos.Y);

printf("■");

//判断是否吃到食物

SnakeNode *p = head;

while(p!=NULL)

if(head->pos.X==foodxy.X&&head->pos.Y==foodxy.Y)//是否吃到食物

//吃到食物加速

if(speed >= 100)

speed -= 20;

food();

return EAT_FOOD;

break;//吃到了则不删除尾部,相当于增加一节

//删除尾部

if(p->next->next==NULL)

gotoxy(p->next->pos.X,p->next->pos.Y);

printf("  ");

delete p->next;

p->next=NULL;

return EAT_NONE;

p = p->next;

int main(){

SnakeNode::create();

while(1)

if(_kbhit())

int ch=getch();

switch(ch)

{

case 'w':case 'W': case 's':case 'S':case 'a':case 'A':

case 'd':case 'D':

{

SnakeNode::getcmd(ch);

}break;

case 'b':

{

SnakeNode::free();

return 0;

}

if(SnakeNode::move()==EAT_SELF)

gotoxy(30,11);

cout<

查看全文

2015-12-05

0

/*++copyright (c) 2004-2005 afe(active-free-elegance)module name:snake.habstract:the class of snake,including the basic-methodsuch as : move,born,and eat,and so on.author:weijian luo (arthur luo) 15-jun-2005e-mail: skybluehacker@yahoo.com.cnrevision history: 1.0--*/#ifndef _greed_snake_ #define _greed_snake_#define snake_move 1 #define safe_delete(p) {delete (p);(p)=null;} #define safe_delete_array(p) {delete[](p);(p)=null;}#include//节点图像显示运动状态(方向) enum bitmapstate{m_none,m_up_up,m_down_down,m_left_left,m_right_right, m_up_left,m_up_right,m_left_up,m_left_down, m_right_up,m_right_down,m_down_right,m_down_left};//节点运动状态(方向) enum movestate{s_none,s_up,s_down,s_left,s_right};//坐标位置结构 struct spoint { int x; int y; };class csnake { struct snake_struct//定义蛇体状态 { movestate head; //头部 movestate *body; //身体 movestate tail; //尾部 };private: int m_length; //蛇的长度 snake_struct m_newsnake; //蛇的新态的所有节点运动状态 snake_struct m_oldsnake; //蛇的原态的所有节点运动状态 bitmapstate *m_pstatearray; //蛇的所有节点显示位图的状态 spoint *m_ppos; //蛇体坐标private: bitmapstate getrightstate(movestate olddirect,movestate newdirect);public:void move(void);void changedirect(movestate d); void addbody(int n=1); void setheadpos(int x,int y); bitmapstate* getstatearray(void); spoint* getpos(void); bool isheadtouchbody(int x,int y); int getlength( void ); void initial( void );public: csnake(int x_pos=0,int y_pos=0,int len=1); ~csnake(); };#endif //_greed_snake_ /*++copyright (c) afe(active-free-elegance)module name:table.habstract:the table class: 1. the table envirement configuration 2. set and clear the food(good ones and bad ones) 3. call the snake instance to moveauthor:weijian luo (arthur luo) 15-jun-2005e-mail: skybluehacker@yahoo.com.cnrevision history: 1.0--*/#ifndef _game_table_ #define _game_table_#define tb_state_ok 0 //正常 #define tb_state_food 1 //食物 #define tb_state_block 2 //障碍-毒果 #define tb_state_sblock 3 //障碍-墙#include"snake.h"class ctable { private: int m_width; //桌子的宽度 int m_height; //桌子的高度 int m_foodnumber; //水果的数目 int m_blocknumber; //障碍物(毒果)的数目 csnake m_snake; //桌子上的蛇 int **m_board; //桌子面板public: ctable(); ~ctable();//初始化桌子面板 void initialtable(int w,int h);//食物的操作 bool addblock(int x,int y); bool addfood(int x,int y); bool clearfood(int x,int y);//物件获取 csnake* getsnake(void); int** getboard(void); int getdata(int x,int y);//蛇的操作 void snakemove(void); bool changesnakedirect(movestate d); };#endif //_game_table_

cmd贪吃蛇(cmd贪吃蛇怎么做)相关推荐

  1. 仿照贪吃蛇大作战的原型做的小游戏

    仿照贪吃蛇大作战的原型做的小游戏,通过摇杆移动小蛇,吃掉食物可以增加身体的长度.有加速功能,还有不太智能的AI电脑. 文件:590m.com/f/25127180-493401547-1ed8d3(访 ...

  2. #进击的贪吃蛇-----将贪吃蛇,飞机大战,坦克大战功能融合形成新的游戏

    #进击的贪吃蛇-----将贪吃蛇,飞机大战,坦克大战功能融合形成新的游戏. 想必很多大一新生在刚学C语言时和我们遇到过同样的问题,就是如何去做第一个C语言大作业. 我们小组内部在讨论大作业时,并不打算 ...

  3. 贪吃蛇之智能蛇的实现

    历经很长时间,在下终于把贪吃蛇人工控制的版本写好,虽然略显粗糙,但也为自己初步写好一个简单游戏高兴不已.近日,又尝试了智能蛇的实现. 智能蛇与人工蛇很相似,不同之处在于一个不需要手动输入字符,另一个则 ...

  4. python地牢贪吃蛇 —Roguelike贪吃蛇游戏游戏源码下载

    Snague 是一款Roguelike类型的贪吃蛇小游戏.在保留贪吃蛇核心机制的基础上进丰富了游戏内容. 游戏中您不但可以挑战不同关卡, 还能够获得不同增强, 过五关斩六将, 打破高分记录, 成为最强 ...

  5. 12行贪吃蛇html,贪吃蛇大作战无敌版

    贪吃蛇大作战无敌版下载是一款贪吃蛇类手游,在贪吃蛇大作战无敌版下载游戏中蛇分两种,蛇越多身体越笨重,但伤害也就越高,小蛇虽然伤害不高,但身体非常灵活,可以非常轻快地躲避大蛇的攻击,还等什么赶快来下载游 ...

  6. 仿生蛇类机器人 特点_不像蛇的仿生蛇 凶猛迅捷,吓人一跳

    浙江在线杭州4月4日讯浙江大学玉泉校区西南面的工控新楼,楼如其名,是一幢非常"工"的教学楼:里面的团队搞机械.控制.电子--各种工程研究,成员也基本上都是笔笔直的工科男. 可是这里 ...

  7. cmd:计算机cmd常用命令集合之详细攻略daiding

    cmd:计算机cmd常用命令集合之详细攻略daiding 目录 1.查看自己电脑上的显存大小 2.远程登陆界面 3.查看已经被占用的端口.以及端口进程 4.ipconfig 5.切换目录 1.查看自己 ...

  8. 常用的cmd /c和cmd /k 以及CMD命令

    java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后关闭命令窗口. cmd /k dir 是执行完d ...

  9. cmd /c和cmd /k和cmd

    java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后关闭命令窗口. cmd /k dir 是执行完d ...

  10. C/C++学习----使用C语言代替cmd命令、cmd命令大全

    [开发环境] 物理机版本:Win 7 旗舰版(64位) IDE版本:Visual Studio 2013简体中文旗舰版(cn_visual_studio_ultimate_2013_with_upda ...

最新文章

  1. java socket 全双工客户端_java socket实现全双工通信
  2. jsp中设置自动换行_微信公众号文章中如何设置自动回复?
  3. linux内核网络初始化,Linux内核--网络栈实现分析
  4. 文件夹目录结构导出工具及下载
  5. 预览速度提升30倍,这是什么黑科技?(天猫618之3D渲染篇)
  6. 【BZOJ】1004: [HNOI2008]Cards(置换群+polya+burnside)
  7. nginx php iconv,Nginx +PHP部署一
  8. 每日一练(8)—— 野指针
  9. 面向对象三之对象的使用方法
  10. Python学习1——语法
  11. Android 网络学习之获取服务器文本文件
  12. 通配符星号(*)和问号(?)的区别
  13. ug10万能许可证一键安装_优胜UG4.0-UG12.0-许可证一键自动安装下载|
  14. JDK下载与安装详细步骤
  15. [论文笔记]Outfit Compatibility Prediction and Diagnosis with Multi-Layered Comparison Network
  16. MaxNewSize is equal to or greater than the entire heap . A new max generation size of will be used.
  17. Mybatis的一级缓存和二级缓存执行顺序
  18. 爆破字典生成器kali之crunch
  19. [工作报告]转载:程序员绩效总结_年终总结怎么写?
  20. 微信公众号如何推广运营

热门文章

  1. 自己整理的申论知识体系梳理分享
  2. SpringBoot 发送邮件和附件
  3. java 窗体音量调节,Mixer音量调节
  4. Centos7安装Docker后无法启动:Failed to program NAT chain: INVALID_ZONE: docker
  5. Deepin安装phpstorm教程
  6. java 英文日期转数字_Java SimpleDateFormat中英文时间格式化转换详解
  7. 使用Retryer优雅地实现对Callable各种各样的重试调用
  8. MuMu模拟器的安装
  9. 通过命令完成 虚拟机 ubuntu 中的文件拷贝到主机
  10. java多个文件压缩成zip文件