贪吃蛇项目总结

以下总结,在此次项目中遇到的问题以及解决方法:

控制台 显示设置:

#include <windows.h>

//void pf(int x, int y, const char & ch) // X坐标, y坐标, 输出的字符

//{

// HANDLE two = GetStdHandle(STD_OUTPUT_HANDLE); //取得输出句柄

//     还有别的两种句柄 输入:STD_INPUT_HANDLE, 错误流:STD_ERROR_HANDLE

// COORD coor; //定义一个控制台光标坐标变量

// coor.X = x;  //给光标的X赋值

// coor.Y = y;  //给光标的y赋值

// SetConsoleCursorPosition(two,coor); //传给修改函数修改

// cout << ch;

//}

//

//void hideCur()

//{

// HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); //取得输出句柄

// CONSOLE_CURSOR_INFO cur; 定义一个光标信息结构体

// cur.bVisible = FALSE; //光标可见性

// cur.dwSize = 1; //光标宽度

// SetConsoleCursorInfo(h,&cur); //设置信息到控制台

//}

数据类型:

//size_t a = 2222; //无符号64位

//cout << a;

//快捷功能:

//1,F12跳转到定义 ctrl + Shift + 8可以跳转回来

//F5启动调试

//F9 增加删除断点

//F10 单步调试

//F11 逐语句调试 进入所有函数

//F10 逐过程调试 不进入函数

//Shift + F5 停止调试

//F5 继续

Vector:

#include <vector>

/*vector<int>num;    //迭代器的使用

num.push_back(1);

num.push_back(2);

num.push_back(3);

num.push_back(4);

vector<int>::iterator itr = num.begin();

int i = -1;

for(itr; itr != num.end(); itr ++)

{

i ++;

}

cout << i;*/

//释放vector新技能get

//vector<type>.swap(yourVector) //释放vector的内存 clear做不到的

键盘:

#include <conio>

//kbhit() //检测键盘是否按下

getch()//获得键盘按键不回显

需要两个getch() 才能接收到方向键盘的值 但是 除了方向键盘 别的键只需一个getch()就能完成接收 解决办法:

char ch;

ch = getch();

if(ch != KEY_ENTER)  //回车一个getch()可以完成接受回车键,但是方向键需要两个getch()完成接受

{

ch = getch();

}

宏定义 一个[a,b) 之间的随机数:

#define R(a,b) (int)(((double)rand()/RAND_MAX)*((b)-(a)) + (a))

代码如下:

sn.h

#ifndef SN_H_
#define SN_H_
#include <string>
#include <vector>
#include <Windows.h>
#include <conio.h>
#include <iostream>
#include <string>
#define R(a,b) (int)(((double)rand()/RAND_MAX)*((b)-(a)) + (a))
#define KNOCKED_WALL 0
#define KNOCKED_FOOD 1
#define KNOCKED_NOTHING 2;
#define KEY_UP 72
#define KEY_RIGHT 77
#define KEY_DOWN 80

#define KEY_LEFT 75
#define KEY_ENTER 13

#define MENUCHA "→"
#define SNAHEAD "H" 
#define SNABODY "b"
#define FOODS "f" 

struct sna_body
{
<span style="white-space:pre">	</span>int x;
<span style="white-space:pre">	</span>int y;
<span style="white-space:pre">	</span>int col;
<span style="white-space:pre">	</span>char *ch;
<span style="white-space:pre">	</span>sna_body(int x, int y, int col, char *ch)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>this->x = x;
<span style="white-space:pre">		</span>this->y = y;
<span style="white-space:pre">		</span>this->col = col;
<span style="white-space:pre">		</span>this->ch = new char[strlen(ch) + 1]; //深拷贝
<span style="white-space:pre">		</span>strcpy(this->ch,ch);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>~sna_body()
<span style="white-space:pre">	</span>{
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>}
};
struct coor_col
{
<span style="white-space:pre">	</span>int x;
<span style="white-space:pre">	</span>int y;
<span style="white-space:pre">	</span>int c;
};
struct food
{
<span style="white-space:pre">	</span>int x;
<span style="white-space:pre">	</span>int y;
<span style="white-space:pre">	</span>int col;
<span style="white-space:pre">	</span>char *ch;
};
using namespace std;
//格式类
class words
{
public :
<span style="white-space:pre">	</span>//字体颜色,背景颜色
<span style="white-space:pre">	</span>void setColor(unsigned short ForeColor,unsigned short BackGroundColor = 0) const 
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
<span style="white-space:pre">		</span>SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>//光标大小&光标可见性
<span style="white-space:pre">	</span>void hideCursor(BOOL j = FALSE) const
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
<span style="white-space:pre">		</span>CONSOLE_CURSOR_INFO cur;
<span style="white-space:pre">		</span>cur.bVisible = j;
<span style="white-space:pre">		</span>cur.dwSize = 1;
<span style="white-space:pre">		</span>SetConsoleCursorInfo(hCon,&cur);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>//文字位置
<span style="white-space:pre">	</span>void wordsLoca(int x, int y)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
<span style="white-space:pre">		</span>COORD coor;
<span style="white-space:pre">		</span>coor.X = x;
<span style="white-space:pre">		</span>coor.Y = y;
<span style="white-space:pre">		</span>SetConsoleCursorPosition(hCon,coor);
<span style="white-space:pre">	</span>}
};
//snak 类
class sna
{
private:
<span style="white-space:pre">	</span>int nowKey; //当前按键
<span style="white-space:pre">	</span>int life; // 生命
<span style="white-space:pre">	</span>int greds; //成绩
<span style="white-space:pre">	</span>bool lifeBeenChange;
<span style="white-space:pre">	</span>int snackSleepTime; //自动移动睡眠时间
<span style="white-space:pre">	</span>int singleSleepTime;
<span style="white-space:pre">	</span>food f;
<span style="white-space:pre">	</span>struct moveDir
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>int x;
<span style="white-space:pre">		</span>int y;
<span style="white-space:pre">	</span>}moveDir;
<span style="white-space:pre">	</span>vector<sna_body> Snake;
<span style="white-space:pre">	</span>words format;
<span style="white-space:pre">	</span>//根据迭代器 获得下标;
<span style="white-space:pre">	</span>int getLastoneIndex();
<span style="white-space:pre">	</span>//设置蛇的输出位置 颜色
<span style="white-space:pre">	</span>void setSnaFormat(sna_body s);
<span style="white-space:pre">	</span>void printSna();
<span style="white-space:pre">	</span>//吃到食物
<span style="white-space:pre">	</span>void eatFood();
<span style="white-space:pre">	</span>//移动
<span style="white-space:pre">	</span>void move();
<span style="white-space:pre">	</span>//生成食物
<span style="white-space:pre">	</span>void buildFood();
<span style="white-space:pre">	</span>//输出食物
<span style="white-space:pre">	</span>void printFood();
<span style="white-space:pre">	</span>void autoMove();
<span style="white-space:pre">	</span>//碰撞检测
<span style="white-space:pre">	</span>int colider();
<span style="white-space:pre">	</span>bool cloider_self();
<span style="white-space:pre">	</span>void dieFlash();
<span style="white-space:pre">	</span>void gameOver();
public:
<span style="white-space:pre">	</span>sna(sna_body s);
<span style="white-space:pre">	</span>void getKey();
<span style="white-space:pre">	</span>void begin();

};
//界面类
class menu
{
private:
<span style="white-space:pre">	</span>coor_col title; //标题
<span style="white-space:pre">	</span>coor_col start_1; //开始的项目符号
<span style="white-space:pre">	</span>coor_col start_2; //开始
<span style="white-space:pre">	</span>coor_col level_1; //等级
<span style="white-space:pre">	</span>coor_col level_2; //等级项目符号
<span style="white-space:pre">	</span>words format; //格式化对象
<span style="white-space:pre">	</span>int select_num;
<span style="white-space:pre">	</span>//****************************************************************
<span style="white-space:pre">	</span>void confiFlash() ;
<span style="white-space:pre">	</span>//设置title 坐标,颜色,内容
<span style="white-space:pre">	</span>void setTitle(const coor_col &a);
<span style="white-space:pre">	</span>//设置start 坐标,颜色,内容
<span style="white-space:pre">	</span>void setStart(const coor_col &st_1, const coor_col &st_2);
<span style="white-space:pre">	</span>//设置title 坐标,颜色,内容
<span style="white-space:pre">	</span>void setLevel(const coor_col &le_1, const coor_col &le_2) ;
<span style="white-space:pre">	</span>//*****************************************************************
<span style="white-space:pre">	</span>coor_col getTitle() const {return title;}
<span style="white-space:pre">	</span>coor_col getLevel_1() const {return level_1;}
<span style="white-space:pre">	</span>coor_col getLevel_2() const {return level_2;}
<span style="white-space:pre">	</span>coor_col getStart_1() const {return start_1;}
<span style="white-space:pre">	</span>coor_col getStart_2() const {return start_2;}
<span style="white-space:pre">	</span>//*******************************************************************
<span style="white-space:pre">	</span>void drawTitle(const string & str);
<span style="white-space:pre">	</span>void drawStart(const char *ch, const string & str);
<span style="white-space:pre">	</span>void drawLevel(const char *ch, const string & str) ;
public:
<span style="white-space:pre">	</span>menu();//构造函数
<span style="white-space:pre">	</span>int getSelectNum() const {return this->select_num;}
<span style="white-space:pre">	</span>void select();
<span style="white-space:pre">	</span>void drawMenu(coor_col &format,coor_col &format_2);
<span style="white-space:pre">	</span>void beginClean();//开始动画
};

#endif

SNACK.cpp

#include "sn.h"

// class sna :
sna::sna(sna_body s) //构造函数
{
	snackSleepTime = 500;
	singleSleepTime = 100;
	this->life = 100;
	this->greds = 0;
	this->lifeBeenChange = false;
	nowKey = KEY_RIGHT; //默认按键 向右
	moveDir.x = s.x;
	moveDir.y = s.y;
	sna_body head = s;
	sna_body head1(s.x-1,s.y,3,SNABODY);
	sna_body head2(head1.x-1,head1.y,head1.col,head1.ch);
	Snake.push_back(head);
	Snake.push_back(head1);
	Snake.push_back(head2);
	this->printSna();
	this->buildFood();
}

int sna::getLastoneIndex()
{
	int i = -1;
	vector<sna_body>::iterator itr = Snake.begin();
	for(;itr != Snake.end(); itr ++)
	{
		i++;
	}
	return i;
}
//设置蛇的输出位置 颜色
void sna::setSnaFormat(sna_body s)
{
	format.setColor(s.col);
	format.wordsLoca(s.x,s.y);
}
void sna::printSna()
{
	for(vector<sna_body>::iterator itr = Snake.begin(); itr != Snake.end(); itr ++)
	{
		setSnaFormat(*itr);
		cout << itr->ch;
	}
}
//吃到食物
void sna::eatFood()
{
	greds ++;
	//更新成绩显示
	format.wordsLoca(93,3);
	cout << "GREDS: ";
	format.wordsLoca(99,3);
	format.setColor(3);
	cout << greds << endl;
	sna_body got(f.x, f.y, Snake.begin()->col, Snake.begin()->ch);
	Snake.insert(Snake.begin(),got); //开始位置插入节点
	Snake[1].ch = Snake[2].ch;
	Snake[1].col = Snake[2].col;
	this->printSna();
	this->buildFood(); //新建一个食物
}
void sna::move()
{
	if(colider() == KNOCKED_WALL) //撞墙或者撞到自己
	{
		this->life --;
		this->lifeBeenChange = true;
		dieFlash();
	}
	else if(colider() == KNOCKED_FOOD) //撞到食物
	{
		eatFood(); //吃到食物
	}
	else
	{
		sna_body newHead(moveDir.x, moveDir.y,Snake[0].col,Snake[0].ch);//新的头结点等于新的移动坐标,等于原来的ch内容
		Snake.insert(Snake.begin(),newHead); //插入新的节点
		Snake[1].ch = Snake[2].ch;//第二个节点(原来的头)等于第三个节点内容,位置不变
		Snake[1].col = Snake[2].col;
		//更改最后一个节点内容为空格,然后输出SNAKE,然后删掉最后一个节点
		Snake[getLastoneIndex()].ch = " ";
		this->printSna();
		Snake.pop_back();
	}
}
void sna::buildFood()
{
	bool foodOk = true;
	do
	{
		foodOk = true;
		f.x = R(1,23); //x
		f.y = R(1,89); //y

		for(vector<sna_body>::iterator itr = Snake.begin(); itr != Snake.end(); itr ++)
		{
			if((itr->x == f.x && itr->y == f.y) || f.x <= 0 || f.x >= 89 || f.y <= 0 || f.y >= 24)
			{
				foodOk = false;
				break;
			}
		}
	}while(!foodOk);

	if(foodOk)
	{

	}
	//char *t =
	f.ch = FOODS;
	f.col = 4; //红色;
	//输出食物
	printFood();
}

void sna::printFood()
{
	format.wordsLoca(f.x, f.y);
	format.setColor(f.col);
	cout << f.ch;
}

void sna::getKey()
{
	while(true)
	{
		int sleepTime = 0;
		while(sleepTime != snackSleepTime)
		{
			if(kbhit())//如果检测到按键
			{
				sleepTime = 0;
				getch();
				this->nowKey = getch();
				if(nowKey == KEY_UP) //上
				{
					moveDir.y = Snake.begin()->y - 1;
				}
				else if(nowKey == KEY_RIGHT) //右
				{
					moveDir.x = Snake.begin()->x + 1;
				}
				else if(nowKey == KEY_DOWN) //下
				{
					moveDir.y = Snake.begin()->y + 1;
				}
				else if(nowKey == KEY_LEFT)//左
				{
					moveDir.x = Snake.begin()->x - 1;
				}
				move();
				if(this->life <= 0) //生命指使用完
				{
					gameOver(); //结束游戏
					return;
				}
			}
			sleepTime += singleSleepTime;
			Sleep(singleSleepTime); //单次睡眠时间越大 连续按键移动速度越慢,因为扫面按键时间变短了
		}
		if(this->lifeBeenChange) //死后停止不动,按键按下才向前动
		{

			this->lifeBeenChange = false;
		}
		else
		{
			autoMove();
			if(this->life <= 0) //生命指使用完
			{
				gameOver(); //结束游戏
				return;
			}
		}

	}
}

void sna::autoMove()
{

	if(nowKey == KEY_UP)
	{
		moveDir.y  --;
	}
	else if(nowKey == KEY_RIGHT)
	{
		moveDir.x ++;
	}
	else if(nowKey == KEY_DOWN)
	{
		moveDir.y ++;
	}
	else if(nowKey == KEY_LEFT)
	{
		moveDir.x --;
	}
	move();
}
void sna::begin()
{
	getKey();
}
bool sna::cloider_self()
{
	for(vector<sna_body>::iterator itr = Snake.begin();itr != Snake.end(); itr ++)
	{
		if(moveDir.x == itr->x && moveDir.y == itr->y)
		{
			cout << itr->x << " " <<itr->y << endl;
			cout << moveDir.x << " " << moveDir.y << endl;
			return true;
		}
	}
	return false;
}
int sna::colider()
{
	if(moveDir.x <= 0 || moveDir.x >= 89 || moveDir.y <= 0 || moveDir.y >= 24 || cloider_self())
		//撞墙 || 撞自己
	{
		format.wordsLoca(93,5);
		cout << "LIFE: " << this->life - 1; //更新生命显示
		format.wordsLoca(3,3);
		cout << moveDir.x << " " << moveDir.y << endl;
		if(nowKey == KEY_UP) //恢复错误 免得困在死亡无法逃生
		{
			moveDir.y ++;
		}
		if(nowKey == KEY_DOWN)
		{
			moveDir.y --;
		}
		if(nowKey == KEY_LEFT)
		{
			moveDir.x ++;
		}
		if(nowKey == KEY_RIGHT)
		{
			moveDir.x --;
		}
		format.wordsLoca(3,4);
		cout << moveDir.x << " " << moveDir.y << endl;

		return KNOCKED_WALL;
	}
	else if(moveDir.x == f.x && moveDir.y == f.y)
	{
		return KNOCKED_FOOD;
	}
	return KNOCKED_NOTHING;
}

void sna::dieFlash()
{
	int T = 3;
	while(T--)
	{
		for(vector<sna_body>::iterator itr = Snake.begin(); itr != Snake.end(); itr ++)
		{
			format.wordsLoca(itr->x,itr->y);
			cout << " ";
		}
		Sleep(400);
		this->printSna();
		Sleep(400);
	}
}

void sna::gameOver()
{
	vector<sna_body>().swap(Snake); //通过swap释放vector内存
	format.setColor(2); //绿色
	for(int y = 1; y < 24; y ++) //填满界面
	{

		format.wordsLoca(1,y);
		for(int i = 1; i < 89; i ++)
		{
			Sleep(1);
			cout << "#";
			if(y == 12 && i == 42)
			{
				format.setColor(4); //红色
				cout << "GAME OVER !";
				i += 11;
				format.setColor(2); //恢复绿色
			}
		}

	}
	Sleep(1000);
	for(int b_x = 1, e_x = 23; b_x <= 12 || e_x > 12; b_x ++, e_x --)
	{
		for(int b_y = 1, e_y = 88; b_y < 89; b_y  ++, e_y --)
		{
			format.wordsLoca(b_y,b_x);
			cout << " ";
			format.wordsLoca(e_y,e_x);
			cout << " ";
			Sleep(1);
		}
	}
}

//class menu:
menu::menu()
{
	words colo;
	colo.setColor(1);
	colo.hideCursor();
	this->select_num = 1;

	for(int i = 0; i < 90; i ++)
	{
		format.wordsLoca(i,0); //第一排边框
		cout << "|";
		format.wordsLoca(i,24); //最后一排边框
		cout << "|";
	}
	for(int i = 0; i < 25; i ++)
	{
		format.wordsLoca(0,i); //左边边框
		cout << "*";
		format.wordsLoca(89,i); //右边边框
		cout << "*";
	}
}
//设置title 坐标,颜色,内容

void menu::confiFlash()  //确认闪烁
{
	if(this->select_num == 1) //闪烁start
	{
		int T = 3;
		while(T)
		{
			drawStart(" ","     "); //擦除输出
			Sleep(400);
			drawStart(MENUCHA,"START");
			Sleep(400);
			T --;
		}
	}
	else if(this->select_num == 2) //闪烁LEVEL
	{
		int T = 3;
		while(T)
		{
			drawLevel(" ","     "); //擦除输出
			Sleep(400);
			drawLevel(MENUCHA,"LEVEL");
			Sleep(400);
			T --;
		}
	}
}

void menu::setTitle(const coor_col &a)
{
	title.x = a.x, title.y = a.y, title.c = a.c;
}

//设置start 坐标,颜色,内容
void menu::setStart(const coor_col &st_1, const coor_col &st_2)
{
	start_1.x = st_1.x, start_1.y = st_1.y, start_1.c = st_1.c,
		start_2.x = st_2.x, start_2.y = st_2.y, start_2.c = st_2.c;
}
//设置title 坐标,颜色,内容
void menu::setLevel(const coor_col &le_1, const coor_col &le_2)
{
	level_1.x = le_1.x, level_1.y = le_1.y, level_1.c = le_1.c;
	level_2.x = le_2.x, level_2.y = le_2.y, level_2.c = le_2.c;
}

void menu::drawTitle(const string & str)
{
	format.setColor(title.c); //设置标题颜色
	format.wordsLoca(title.x,title.y); //设置标题输出坐标
	cout << str; //输出标题
}

void menu::drawStart(const char *ch,const string & str)
{
	format.setColor(start_1.c); //设置标题颜色
	format.wordsLoca(start_1.x,start_1.y); //设置标题输出坐标
	wcout << ch;
	format.setColor(start_2.c);
	format.wordsLoca(start_2.x, start_2.y);
	cout << str;
}
void menu::drawLevel(const char *ch,const string & str)
{
	format.setColor(level_1.c); //设置标题颜色
	format.wordsLoca(level_1.x,level_1.y); //设置标题输出坐标
	cout << ch;
	format.setColor(level_2.c);
	format.wordsLoca(level_2.x,level_2.y);
	cout << str;
}
void menu::select()
{
	while(true)
	{
		char ch;
		ch = getch();
		if(ch != KEY_ENTER)  //回车一个getch()可以完成接受回车键,但是方向键需要两个getch()完成接受
		{
		ch = getch();
		}
		if(this->select_num == 1)
		{

			if(ch == KEY_DOWN) //80 下键
			{
				this->select_num ++;
				drawStart(" ","START");
				drawLevel(MENUCHA,"LEVEL");
			}
			else if(ch == KEY_ENTER) //13 回车键
			{
				confiFlash(); //闪烁
				break;
			}

		}
		if(this->select_num == 2)
		{

			if(ch == KEY_UP) //72 上键
			{
				this->select_num --;
				drawStart(MENUCHA,"START");
				drawLevel(" ","LEVEL");
			}
			else if(ch== KEY_ENTER) //13 回车键
			{
				confiFlash(); //闪烁
				break;
			}
		}
	}
}
void menu::drawMenu(coor_col &format,coor_col &format_2)
{
	this->setTitle(format);
	this->drawTitle("WELLCOME TO THE SNAKE");

	format.x = 25, format_2.x = format.x + 3;
	format.y = 10, format_2.y = format.y;
	format.c = 6, format_2.c = 3;

	this->setStart(format, format_2);
	this->drawStart(MENUCHA,"START");

	format.x = 25; format_2.x = format.x + 3;
	format.y = 12; format_2.y = format.y;
	format.c = 6; format_2.c = 3;
	this->setLevel(format,format_2);
	this->drawLevel(" ","LEVEL");
}

void menu::beginClean() //开始动画
{
	for(int y = 1; y < 24; y ++)
	{
		format.wordsLoca(1,y);
		for(int i = 1; i < 89; i ++)
			cout << " ";
	}
	//输出空格 填充过期的成绩
	format.wordsLoca(93,3);
	cout << "GREDS:     ";
	format.wordsLoca(93,5);
	cout << "LIFE: 3     ";
	//输出tip
	format.wordsLoca(93,8);
	format.setColor(6);
	cout << "TIP:";
	format.wordsLoca(93,10);
	cout << "↑ ";
	cout << "向上移动";
	format.wordsLoca(93,12);
	cout << "↓ ";
	cout <<"向下移动";
	format.wordsLoca(93,14);
	cout << "← ";
	cout << "向左移动";
	format.wordsLoca(93,16);
	cout << "→ ";
	cout << "向右移动";
}

MAIN.cpp

#include "sn.h"

using namespace std;

int main()
{
	menu in_face;
	coor_col format;
	coor_col format_2;

	while(true)
	{
	format.x = 35; //标题位置
	format.y = 5;
	format.c = 3;  //标题颜色
	in_face.drawMenu(format,format_2);
	in_face.select();
	int num = in_face.getSelectNum();
	in_face.beginClean();
	if(num == 1) //start
	{
		sna_body s_b(5,1,4,SNAHEAD);
		sna one(s_b);
		one.begin();
	}
	else if(num == 2)
	{
		cout << "sorry, wait please...\n";
	}
	}
	return 1;
}
时间: 2024-10-31 09:09:36

贪吃蛇项目总结的相关文章

结对编程贪吃蛇项目-结对编项目设计文档

项目名称:贪吃蛇 项目人员:田兴农  王铖 项目所需环境及工具:python  pygame 了解python的使用方法,并讨论如何完成贪食蛇的代码 1.导入数据库.初始化游戏.游戏窗口的实现(设置窗口大小.填充背景)2.让蛇在屏幕上出现并定义蛇的颜色:3.人机交互,控制蛇的运行速度及方向:4.定义食物的属性,并且让食物在屏幕上随机位置出现,蛇吃到食物后食物消失,蛇身体加长:5.让蛇在碰到窗口边缘后再窗口的另一侧耳出现:6.当蛇碰到自己的身体时蛇死亡并将蛇的颜色和游戏的界面颜色调换:7.设置重新

安卓贪吃蛇项目包!!

我在博客上看见很多有关于安卓开发贪吃蛇的博文,但是都不知道他们所用的软件.版本是什么,所以在自己下载的软件上运行的时候总是出不来结果,作为一只安卓课程老师只上了一节课就让我们自己做课程设计的菜鸟来说,这是何其困哪的一件事,安卓什么也不懂,运行环境也是一点也不熟悉.我们老师要求我们用eclipse来运行,有没有人是用这个做过的啊?求帮助!!真的是不会了,找了很多的项目包运行的时候都会出错,永远不会出现贪吃蛇的界面,宝宝真的快疯了.还附上了我所用的软件,有没有好心人解答下这个问题. 本来打算私聊项目

结对-贪吃蛇项目-结对项目总结

结对编程项目名称:贪吃蛇 结对编程成员:2015035107052 田兴农 2015035107053王 铖 一.项目功能说明 贪吃蛇游戏:在窗口中有蛇和食物,通过按键控制蛇的上下左右,当蛇吃到食物后蛇的身体加长一节,如果蛇的在移动中蛇头碰到身体,游戏结束.通过Python 和 pygame来实现这个游戏. 二.实现步骤 1.创建一个游戏窗口,设置游戏背景. 2.在窗口中放入蛇,设置蛇的颜色 3.实现人机交互用键盘的方向键来控制蛇的移动,蛇可以向上.下.左.右四个方向移动. 4.在窗口中放入食物

结对编程 贪吃蛇项目-开发环境搭建过程

贪吃蛇开发环境搭建 Python和pygame的安装过程 1.去官网下载python和pygame.(需注意自己电脑是32位的还是64位的) 2.安装pythone 和 pygame. 3.安装完成后,查看环境变量配置情况:计算机->属性->高级系统设置->环境变量->系统变量->Path. 4.在命令提示符中输入:python,验证是否安装成功,若提示是无效的命令,重启计算机,再输入python验证. 5.在Python IDLE中输入import pygame和pygam

5.贪吃蛇项目

Snake.h 1 #pragma once 2 #include <stdio.h> 3 #include <graphics.h> 4 #include <mmsystem.h> 5 #include <stdlib.h> 6 #include <time.h> 7 #pragma comment(lib,"winmm.lib") 8 9 #define WINDOW_WIDTH 640//窗口的宽 10 #define

结对编程贪吃蛇项目需求分析

1.初始化游戏界面为 600*600大小,并于在中间显示开始游戏界面,等待鼠标响应以开始游戏: 2.在程序中用格子初始蛇长及蛇的位置,用W.S.A.D控制方向为上下左右进行游戏.游戏过程中,每吃到一次食物用For循环使蛇移动的speed增加,分数加10 ,蛇长加一格: 3.蛇头咬到蛇尾or蛇头接触活动区域外围则Game over,显示累计分数,游戏结束. 4. 项目里有暂停按键.重新开始按键使得游戏可以暂停和重新开始. 组员:张鸿程,喻政博.

原生JS实现贪吃蛇项目,附源码下载!

运行于谷歌浏览器.主要是利用了函数的封装思想,把每一个小功能分别封装在一个函数中,大大提高了代码的可扩展性!!提高了代码的可维护性!!!提高了代码的可阅读性!!!项目要求:1:有边界,碰到边界就game over.2:猎物没3秒增加一个,而且位置随机产生.3:吃一个猎物自身就增加一个元素.4:按上下左右控制移动方向,按空格决定暂停和前进. 实现思路:主要是一开始就把实现的功能封装在了一个先函数中去了,所以后续的功能增加就比较容易了.1:先画出了边界,就是实现了设置边界的函数.2:实现判断按键功能

结对编程贪吃蛇-结对编项目设计文档

项目名称:贪吃蛇 项目人员:田兴农  王铖 项目所需环境及工具:python  pygame 了解python的使用方法,并讨论如何完成贪食蛇的代码 1.导入数据库.初始化游戏.游戏窗口的实现(设置窗口大小.填充背景) 2.让蛇在屏幕上出现并定义蛇的颜色: 3.人机交互,控制蛇的运行速度及方向: 4.定义食物的属性,并且让食物在屏幕上随机位置出现,蛇吃到食物后食物消失,蛇身体加长: 5.让蛇在碰到窗口边缘后再窗口的另一侧耳出现: 6.当蛇碰到自己的身体时蛇死亡并将蛇的颜色和游戏的界面颜色调换:

MFC贪吃蛇

1多人贪吃蛇项目描述 1.1功能描述 实现多人对战贪吃蛇,具体实现功能:A.可以选择游戏人数,最多设置4人同时游戏:B.显示玩家得到的分数:C.可以设置游戏的速度:D.能实现最高分的记录 1.2所需技术 1.在对话框中创建窗口:2.双缓冲绘图:3.蛇身移动处理:4.碰撞检测:5.Ini文件操作 2多人贪吃蛇运行流程 3多人贪吃蛇详细设计 3.1贪吃蛇个体类设计 把贪吃蛇单独的设为一个类,其中包含成员变量如下 BOOL m_bAliveFlg; //蛇当前存活标志 int m_iDirect; /