cmd贪吃蛇(cmd贪吃蛇怎么做)
贪吃蛇代码-贪吃蛇的围墙代码怎么?贪吃蛇的围墙代码怎么写
哈哈……避邪[哈哈]
贪吃蛇在哪下载啊
我的工享里有
在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贪吃蛇怎么做)相关推荐
- 仿照贪吃蛇大作战的原型做的小游戏
仿照贪吃蛇大作战的原型做的小游戏,通过摇杆移动小蛇,吃掉食物可以增加身体的长度.有加速功能,还有不太智能的AI电脑. 文件:590m.com/f/25127180-493401547-1ed8d3(访 ...
- #进击的贪吃蛇-----将贪吃蛇,飞机大战,坦克大战功能融合形成新的游戏
#进击的贪吃蛇-----将贪吃蛇,飞机大战,坦克大战功能融合形成新的游戏. 想必很多大一新生在刚学C语言时和我们遇到过同样的问题,就是如何去做第一个C语言大作业. 我们小组内部在讨论大作业时,并不打算 ...
- 贪吃蛇之智能蛇的实现
历经很长时间,在下终于把贪吃蛇人工控制的版本写好,虽然略显粗糙,但也为自己初步写好一个简单游戏高兴不已.近日,又尝试了智能蛇的实现. 智能蛇与人工蛇很相似,不同之处在于一个不需要手动输入字符,另一个则 ...
- python地牢贪吃蛇 —Roguelike贪吃蛇游戏游戏源码下载
Snague 是一款Roguelike类型的贪吃蛇小游戏.在保留贪吃蛇核心机制的基础上进丰富了游戏内容. 游戏中您不但可以挑战不同关卡, 还能够获得不同增强, 过五关斩六将, 打破高分记录, 成为最强 ...
- 12行贪吃蛇html,贪吃蛇大作战无敌版
贪吃蛇大作战无敌版下载是一款贪吃蛇类手游,在贪吃蛇大作战无敌版下载游戏中蛇分两种,蛇越多身体越笨重,但伤害也就越高,小蛇虽然伤害不高,但身体非常灵活,可以非常轻快地躲避大蛇的攻击,还等什么赶快来下载游 ...
- 仿生蛇类机器人 特点_不像蛇的仿生蛇 凶猛迅捷,吓人一跳
浙江在线杭州4月4日讯浙江大学玉泉校区西南面的工控新楼,楼如其名,是一幢非常"工"的教学楼:里面的团队搞机械.控制.电子--各种工程研究,成员也基本上都是笔笔直的工科男. 可是这里 ...
- cmd:计算机cmd常用命令集合之详细攻略daiding
cmd:计算机cmd常用命令集合之详细攻略daiding 目录 1.查看自己电脑上的显存大小 2.远程登陆界面 3.查看已经被占用的端口.以及端口进程 4.ipconfig 5.切换目录 1.查看自己 ...
- 常用的cmd /c和cmd /k 以及CMD命令
java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后关闭命令窗口. cmd /k dir 是执行完d ...
- cmd /c和cmd /k和cmd
java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后关闭命令窗口. cmd /k dir 是执行完d ...
- C/C++学习----使用C语言代替cmd命令、cmd命令大全
[开发环境] 物理机版本:Win 7 旗舰版(64位) IDE版本:Visual Studio 2013简体中文旗舰版(cn_visual_studio_ultimate_2013_with_upda ...
最新文章
- java socket 全双工客户端_java socket实现全双工通信
- jsp中设置自动换行_微信公众号文章中如何设置自动回复?
- linux内核网络初始化,Linux内核--网络栈实现分析
- 文件夹目录结构导出工具及下载
- 预览速度提升30倍,这是什么黑科技?(天猫618之3D渲染篇)
- 【BZOJ】1004: [HNOI2008]Cards(置换群+polya+burnside)
- nginx php iconv,Nginx +PHP部署一
- 每日一练(8)—— 野指针
- 面向对象三之对象的使用方法
- Python学习1——语法
- Android 网络学习之获取服务器文本文件
- 通配符星号(*)和问号(?)的区别
- ug10万能许可证一键安装_优胜UG4.0-UG12.0-许可证一键自动安装下载|
- JDK下载与安装详细步骤
- [论文笔记]Outfit Compatibility Prediction and Diagnosis with Multi-Layered Comparison Network
- MaxNewSize is equal to or greater than the entire heap . A new max generation size of will be used.
- Mybatis的一级缓存和二级缓存执行顺序
- 爆破字典生成器kali之crunch
- [工作报告]转载:程序员绩效总结_年终总结怎么写?
- 微信公众号如何推广运营
热门文章
- 自己整理的申论知识体系梳理分享
- SpringBoot 发送邮件和附件
- java 窗体音量调节,Mixer音量调节
- Centos7安装Docker后无法启动:Failed to program NAT chain: INVALID_ZONE: docker
- Deepin安装phpstorm教程
- java 英文日期转数字_Java SimpleDateFormat中英文时间格式化转换详解
- 使用Retryer优雅地实现对Callable各种各样的重试调用
- MuMu模拟器的安装
- 通过命令完成 虚拟机 ubuntu 中的文件拷贝到主机
- java多个文件压缩成zip文件