資源簡介
貪吃蛇
代碼片段和文件信息
/************************貪吃蛇***********************/
/**********************2012-11-20*********************/
?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
?
/***?光標定位?***/
HANDLE?hout=GetStdHandle(STD_OUTPUT_HANDLE);
COORD?coord;
?
void?locate(int?xint?y)
{
????coord.X=y;
????coord.Y=x;
????SetConsoleCursorPosition(houtcoord);
};
?
/***?隱藏光標?***/
void?hide()
{
????CONSOLE_CURSOR_INFO?cursor_info={10};
????SetConsoleCursorInfo(hout?&cursor_info);
}
?
/***?生成隨機數?***/
double?random(double?start?double?end)
{
????return?start+(end-start)*rand()/(RAND_MAX?+?1.0);
}
?
/***?定義地圖的長寬,蛇的坐標,長度,方向,食物的位置?***/
int?mn;
?
struct?node
{
????int?xy;
}snake[1000];
?
int?snake_lengthdir;
node?food;
int?direct[4][2]={{-10}{10}{0-1}{01}};
?
/***?輸出墻?***/
void?print_wall()
{
????cout?<“?“;
????for?(int?i=1;i<=n;i++)
????????cout?<“-“;
????cout?<????for?(int?j=0;j<=m-1;j++)
????{
????????cout?<“|“;
????????for?(int?i=1;i<=n;i++)?cout?<“?“;
????????cout?<“|“?<????}
????cout?<“?“;
????for?(int?i=1;i<=n;i++)
????????cout?<“-“;
}
?
/***?首次輸出蛇,其中snake[0]代表頭?***/
void?print_snake()
{
????locate(snake[0].xsnake[0].y);
????cout?<“@“;
????for?(int?i=1;i<=snake_length-1;i++)
????{
????????locate(snake[i].xsnake[i].y);
????????cout?<“*“;
????}
}
?
/***?判斷是否撞墻或者自撞?***/
bool?is_correct()
{
????if?(snake[0].x==0?||?snake[0].y==0?||?snake[0].x==m+1?||?snake[0].y==n+1)?return?false;
????for?(int?i=1;i<=snake_length-1;i++)
????{
????????if?(snake[0].x==snake[i].x?&&?snake[0].y==snake[i].y)?return?false;
????}
????return?true;
}
?
/***?隨機生成并輸出食物位置?***/
bool?print_food()
{
????srand((unsigned)time(0));
????bool?e;
????while?(1)
????{
????????e=true;
????????int?i=(int)?random(0m)+1j=(int)?random(0n)+1;
????????food.x=i;food.y=j;
????????for?(int?k=0;k<=snake_length-1;k++)
????????{
????????????if?(snake[k].x==food.x?&&?snake[k].y==food.y)
????????????{
????????????????e=false;break;
????????????}
????????}
????????if?(e)?break;
????}
????locate(food.xfood.y);
????cout?<“$“;
????return?true;
}
?
/***?蛇的前進?***/
bool?go_ahead()
{
????node?temp;
????bool?e=false;
????temp=snake[snake_length-1];
????for?(int?i=snake_length-1;i>=1;i--)
????????snake[i]=snake[i-1];
????snake[0].x+=direct[dir][0];
????snake[0].y+=direct[dir][1];
????locate(snake[1].xsnake[1].y);
????cout?<“*“;
????/***?吃到了食物?***/
????if?(snake[0].x==food.x?&&?snake[0].y==food.y)
????{
????????snake_length++;
????????e=true;
????????snake[snake_length-1]=temp;
????}
????
- 上一篇:五子棋c++控制臺代碼
- 下一篇:c++ 23種設計模式
評論
共有 條評論