求C++小游戏源代码啊~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求C++小游戏源代码啊~相关的知识,希望对你有一定的参考价值。

像坦克啊,贪吃蛇这种小游戏就行,不用搞得太好的,要那种在黑色窗口或白色窗口里玩的小游戏,

以下是贪吃蛇源代码:

#include<iostream.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#define N 21
void gotoxy(int x,int y)//位置函数

COORD pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

void color(int a)//颜色函数

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);

void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)

int i,j;//初始化围墙
int wall[N+2][N+2]=0;
for(i=1;i<=N;i++)

for(j=1;j<=N;j++)
wall[i][j]=1;

color(11);
for(i=0;i<N+2;i++)

for(j=0;j<N+2;j++)

if(wall[i][j])
cout<<"■";
else cout<<"□" ;

cout<<endl;

gotoxy(N+3,1);//显示信息
color(20);
cout<<"按 W S A D 移动方向"<<endl;
gotoxy(N+3,2);
color(20);
cout<<"按任意键暂停"<<endl;
gotoxy(N+3,3);
color(20);
cout<<"得分:"<<endl;
apple[0]=rand()%N+1;//苹果
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;

int main()

int i,j;
int** snake=NULL;
int apple[2];
int score=0;
int tail[2];
int len=3;
char ch='p';
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=0;i<len;i++)
snake[i]=(int*)malloc(sizeof(int)*2);
for(i=0;i<len;i++)

snake[i][0]=N/2;
snake[i][1]=N/2+i;
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout<<"★"<<endl;

while(1)//进入消息循环

tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
gotoxy(tail[0],tail[1]);
color(11);
cout<<"■"<<endl;
for(i=len-1;i>0;i--)

snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout<<"★"<<endl;

if(kbhit())

gotoxy(0,N+2);
ch=getche();

switch(ch)

case 'w':snake[0][1]--;break;
case 's':snake[0][1]++;break;
case 'a':snake[0][0]--;break;
case 'd':snake[0][0]++;break;
default: break;

gotoxy(snake[0][0],snake[0][1]);
color(14);
cout<<"★"<<endl;
Sleep(abs(200-0.5*score));
if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1

score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-1]=(int*)malloc(sizeof(int)*2);
apple[0]=rand()%N+1;
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;
gotoxy(N+5,3);
color(20);
cout<<score<<endl;

if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败

gotoxy(N/2,N/2);
color(30);
cout<<"失败!!!"<<endl;
for(i=0;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);


return 0;

参考资料:从C++吧看来的

参考技术A 要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
要源码的,在评论里打个@,我先去做
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<string>
using namespace std;
ypedef struct Frame

COORD position[2];
int flag;
Frame;
void SetPos(COORD a)// set cursor


HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(out, a);


void SetPos(int i, int j)// set cursor

COORD pos=i, j;
SetPos(pos);


void HideCursor()

CONSOLE_CURSOR_INFO cursor_info = 1, 0;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);


//把第y行,[x1, x2) 之间的坐标填充为 ch
void drawRow(int y, int x1, int x2, char ch)

SetPos(x1,y);
for(int i = 0; i <= (x2-x1); i++)
cout<<ch;


//在a, b 纵坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawRow(COORD a, COORD b, char ch)

if(a.Y == b.Y)
drawRow(a.Y, a.X, b.X, ch);
else

SetPos(0, 25);
cout<<"error code 01:无法填充行,因为两个坐标的纵坐标(x)不相等";
system("pause");



//把第x列,[y1, y2] 之间的坐标填充为 ch
void drawCol(int x, int y1, int y2, char ch)

int y=y1;
while(y!=y2+1)

SetPos(x, y);
cout<<ch;
y++;



//在a, b 横坐标相同的前提下,把坐标 [a, b] 之间填充为 ch
void drawCol(COORD a, COORD b, char ch)

if(a.X == b.X)
drawCol(a.X, a.Y, b.Y, ch);
else

SetPos(0, 25);
cout<<"error code 02:无法填充列,因为两个坐标的横坐标(y)不相等";
system("pause");


void drawFrame(COORD a, COORD b, char row, char col)

drawRow(a.Y, a.X+1, b.X-1, row);
drawRow(b.Y, a.X+1, b.X-1, row);
drawCol(a.X, a.Y+1, b.Y-1, col);
drawCol(b.X, a.Y+1, b.Y-1, col);


void drawFrame(int x1, int y1, int x2, int y2, char row, char col)

COORD a=x1, y1;
COORD b=x2, y2;
drawFrame(a, b, row, col);

void drawFrame(Frame frame, char row, char col)

COORD a = frame.position[0];
COORD b = frame.position[1];
drawFrame(a, b, row, col);

void drawPlaying()

drawFrame(0, 0, 48, 24, '=', '|');// draw map frame;
drawFrame(49, 0, 79, 4, '-', '|');// draw output frame
drawFrame(49, 4, 79, 9, '-', '|');// draw score frame
drawFrame(49, 9, 79, 20, '-', '|');// draw operate frame
drawFrame(49, 20, 79, 24, '-', '|');// draw other message frame
SetPos(52, 6);
cout<<"得分:";
SetPos(52, 7);
cout<<"称号:";
SetPos(52,10);
cout<<"操作方式:";
SetPos(52,12);
cout<<" a,s,d,w 控制战机移动。";
SetPos(52,14);
cout<<" p 暂停游戏。";
SetPos(52,16);
cout<<" e 退出游戏。";

int random(int a, int b)

int c=(rand() % (a-b))+ a;
return c;

COORD random(COORD a, COORD b)

int x=random(a.X, b.X);
int y=random(a.Y, b.Y);
COORD c=x, y;
return c;


bool judgeCoordInFrame(Frame frame, COORD spot)

if(spot.X>=frame.position[0].X)
if(spot.X<=frame.position[1].X)
if(spot.Y>=frame.position[0].Y)
if(spot.Y<=frame.position[0].Y)
return true;
return false;


void printCoord(COORD a)

cout <<"( "<<a.X<<" , "<<a.Y<<" )";


void printFrameCoord(Frame a)

printCoord(a.position[0]);
cout <<" - ";
printCoord(a.position[1]);


int drawMenu()

SetPos(30, 1);
cout<<"P l a n e W a r";
drawRow(3, 0, 79, '-');
drawRow(5, 0, 79, '-');
SetPos(28, 4);
cout<<"w 和 s 选择, k 确定";
SetPos(15, 11);
cout<<"1. 简单的敌人";
SetPos(15, 13);
cout<<"2. 冷酷的敌人";
drawRow(20, 0, 79, '-');
drawRow(22, 0, 79, '-');
SetPos(47, 11);
cout<<"简单的敌人:";
SetPos(51, 13);
cout<<"简单敌人有着较慢的移动速度。";
SetPos(24, 21);
cout<<"制作:老八(秘制小汉堡)";
int j=11;
SetPos(12, j);
cout<<">>";

//drawFrame(45, 9, 79, 17, '=', '|');

while(1)
if( _kbhit() )

char x=_getch();
switch (x)

case 'w' :

if( j == 13)

SetPos(12, j);
cout<<" ";
j = 11;
SetPos(12, j);
cout<<">>";
SetPos(51, 13);
cout<<"            ";
SetPos(47, 11);
cout<<"简单的敌人:";
SetPos(51, 13);
cout<<"简单敌人有着较慢的移动速度,比较容易对付";

break;

case 's' :

if( j == 11 )

SetPos(12, j);
cout<<" ";
j = 13;
SetPos(12, j);
cout<<">>";
SetPos(51, 13);
cout<<"              ";
SetPos(47, 11);
cout<<"冷酷的敌人:";
SetPos(51, 13);
cout<<"冷酷的敌人移动速度较快,难对付哟。";

break;

case 'k' :

if (j == 8) return 1;
else return 2;





DWORD WINAPI MusicFun(LPVOID lpParamte)

//DWORD OBJ;
sndPlaySound(TEXT("bgm.wav"), SND_FILENAME|SND_ASYNC);
return 0;

class Game

public:
COORD position[10];
COORD bullet[10];
Frame enemy[8];
int score;
int rank;
int rankf;
string title;
int flag_rank;

Game ();

//初始化所有
void initPlane();
void initBullet();
void initEnemy();

//初始化其中一个
//void initThisBullet( COORD );
//void initThisEnemy( Frame );

void planeMove(char);
void bulletMove();
void enemyMove();

//填充所有
void drawPlane();
void drawPlaneToNull();
void drawBullet();
void drawBulletToNull();
void drawEnemy();
void drawEnemyToNull();

//填充其中一个
void drawThisBulletToNull( COORD );
void drawThisEnemyToNull( Frame );

void Pause();
void Playing();
void judgePlane();
void judgeEnemy();

void Shoot();

void GameOver();
void printScore();
;

Game::Game()

initPlane();
initBullet();
initEnemy();
score = 0;
rank = 25;
rankf = 0;
flag_rank = 0;


void Game::initPlane()

COORD centren=39, 22;
position[0].X=position[5].X=position[7].X=position[9].X=centren.X;
position[1].X=centren.X-2;
position[2].X=position[6].X=centren.X-1;
position[3].X=position[8].X=centren.X+1;
position[4].X=centren.X+2;
for(int i=0; i<=4; i++)
position[i].Y=centren.Y;
for(int i=6; i<=8; i++)
position[i].Y=centren.Y+1;
position[5].Y=centren.Y-1;
position[9].Y=centren.Y-2;


void Game::drawPlane()

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

SetPos(position[i]);
if(i!=5)
cout<<"O";
else if(i==5)
cout<<"|";



void Game::drawPlaneToNull()

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

SetPos(position[i]);
cout<<" ";



void Game::initBullet()

for(int i=0; i<10; i++)
bullet[i].Y = 30;


void Game::drawBullet()

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

if( bullet[i].Y != 30)

SetPos(bullet[i]);
cout<<"^";




void Game::drawBulletToNull()

for(int i=0; i<10; i++)
if( bullet[i].Y != 30 )

COORD pos=bullet[i].X, bullet[i].Y+1;
SetPos(pos);
cout<<" ";



void Game::initEnemy()

COORD a=1, 1;
COORD b=45, 15;
for(int i=0; i<8; i++)

enemy[i].position[0] = random(a, b);
enemy[i].position[1].X = enemy[i].position[0].X + 3;
enemy[i].position[1].Y = enemy[i].position[0].Y + 2;



void Game::drawEnemy()

for(int i=0; i<8; i++)
drawFrame(enemy[i].position[0], enemy[i].position[1], '-', '|');


void Game::drawEnemyToNull()

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

drawFrame(enemy[i].position[0], enemy[i].position[1], ' ', ' ');



void Game::Pause()

SetPos(61,2);
cout<<" ";
SetPos(61,2);
cout<<"暂停中...";
char c=_getch();
while(c!='p')
c=_getch();
SetPos(61,2);
cout<<" ";


void Game::planeMove(char x)

if(x == 'a')
if(position[1].X != 1)
for(int i=0; i<=9; i++)
position[i].X -= 2;

if(x == 's')
if(position[7].Y != 23)
for(int i=0; i<=9; i++)
position[i].Y += 1;

if(x == 'd')
if(position[4].X != 47)
for(int i=0; i<=9; i++)
position[i].X += 2;

if(x == 'w')
if(position[5].Y != 3)
for(int i=0; i<=9; i++)
position[i].Y -= 1;


void Game::bulletMove()

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

if( bullet[i].Y != 30)

bullet[i].Y -= 1;
if( bullet[i].Y == 1 )

COORD pos=bullet[i].X, bullet[i].Y+1;
drawThisBulletToNull( pos );
bullet[i].Y=30;






void Game::enemyMove()

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

for(int j=0; j<2; j++)
enemy[i].position[j].Y++;

if(24 == enemy[i].position[1].Y)

COORD a=1, 1;
COORD b=45, 3;
enemy[i].position[0] = random(a, b);
enemy[i].position[1].X = enemy[i].position[0].X + 3;
enemy[i].position[1].Y = enemy[i].position[0].Y + 2;




void Game::judgePlane()

for(int i = 0; i < 8; i++)
for(int j=0; j<9; j++)
if(judgeCoordInFrame(enemy[i], position[j]))

SetPos(62, 1);
cout<<"坠毁";
drawFrame(enemy[i], '+', '+');
Sleep(1000);
GameOver();
break;



void Game::drawThisBulletToNull( COORD c)

SetPos(c);
cout<<" ";


void Game::drawThisEnemyToNull( Frame f )

drawFrame(f, ' ', ' ');


void Game::judgeEnemy()

for(int i = 0; i < 8; i++)
for(int j = 0; j < 10; j++)
if( judgeCoordInFrame(enemy[i], bullet[j]) )

score += 5;
drawThisEnemyToNull( enemy[i] );
COORD a=1, 1;
COORD b=45, 3;
enemy[i].position[0] = random(a, b);
enemy[i].position[1].X = enemy[i].position[0].X + 3;
enemy[i].position[1].Y = enemy[i].position[0].Y + 2;
drawThisBulletToNull( bullet[j] );
bullet[j].Y = 30;



void Game::Shoot()

for(int i=0; i<10; i++)
if(bullet[i].Y == 30)

bullet[i].X = position[5].X;
bullet[i].Y = position[5].Y-1;
break;



void Game::printScore()

if(score == 120 && flag_rank == 0)

rank -= 3;
flag_rank = 1;


else if( score == 360 && flag_rank == 1)

rank -= 5;
flag_rank = 2;

else if( score == 480 && flag_rank == 2)

rank -= 5;
flag_rank = 3;

int x=rank/5;
SetPos(60, 6);
cout<<score;

if( rank!=rankf )

SetPos(60, 7);
if( x == 5)
title="初级飞行员";
else if( x == 4)
title="中级飞行员";
else if( x == 3)
title="高级飞行员";
else if( x == 2 )
title="王牌飞行员";
cout<<title;

rankf = rank;


void Game::Playing()

//HANDLE MFUN;
//MFUN= CreateThread(NULL, 0, MusicFun, NULL, 0, NULL);

drawEnemy();
drawPlane();

int flag_bullet = 0;
int flag_enemy = 0;

while(1)

Sleep(8);
if(_kbhit())

char x = _getch();
if ('a' == x || 's' == x || 'd' == x || 'w' == x)

drawPlaneToNull();
planeMove(x);
drawPlane();
judgePlane();

else if ('p' == x)
Pause();
else if( 'k' == x)
Shoot();
else if( 'e' == x)

//CloseHandle(MFUN);
GameOver();
break;



/* 处理子弹 */
if( 0 == flag_bullet )

bulletMove();
drawBulletToNull();
drawBullet();
judgeEnemy();

flag_bullet++;
if( 5 == flag_bullet )
flag_bullet = 0;

/* 处理敌人 */
if( 0 == flag_enemy )

drawEnemyToNull();
enemyMove();
drawEnemy();
judgePlane();

flag_enemy++;
if( flag_enemy >= rank )
flag_enemy = 0;

/* 输出得分 */
printScore();



void Game::GameOver()

system("cls");
COORD p1=28,9;
COORD p2=53,15;
drawFrame(p1, p2, '=', '|');
SetPos(36,12);
string str="Game Over!";
for(int i=0; i<str.size(); i++)

Sleep(80);
cout<<str[i];

Sleep(1000);
system("cls");
drawFrame(p1, p2, '=', '|');
SetPos(31, 11);
cout<<"击落敌机:"<<score/5<<" 架";
SetPos(31, 12);
cout<<"得  分:"<<score;
SetPos(31, 13);
cout<<"获得称号:"<<title;
SetPos(30, 16);
Sleep(1000);
cout<<"继续? 是(y)| 否(n)制作:老八";
as:
char x=_getch();
if (x == 'n')
exit(0);
else if (x == 'y')

system("cls");
Game game;
int a = drawMenu();
if(a == 2)
game.rank = 20;
system("cls");
drawPlaying();
game.Playing();

else goto as;

int main()

srand((int)time(0));
HideCursor();

Game game;
int a = drawMenu();
if(a == 2)
game.rank = 20;
system("cls");
drawPlaying();
game.Playing();
参考技术B 一个恋爱小测试贼灵验哦
#include<bits/stdc++.h>
using namespace std;
int main()

int n,m,a,b,c,d,e,f,g,h,i,j,k,l,sum;
cout<<"欢迎来到恋爱指数测试器*>-<*"<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
cout<<"独家的哦*^0^*"<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
cout<<"以下异性均为合适年龄"<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
cout<<"下列问题如果是则输入2,如果不是则输入1,一点也没感觉输入0"<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
cout<<"加油,面对你自己!*-o-*"<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
cout<<"question one:"<<"你是否面对异性时有莫名心跳?"<<endl;
cin>>n;
cout<<endl;
cout<<"question two:"<<"你是否有看到异性被撩时很愤怒?"<<endl;
cin>>m;
cout<<endl;
cout<<"question three:"<<"你是否惧怕见到一位异性的家长"<<endl;
cin>>a;
cout<<endl;
cout<<"question four:"<<"你是否经常刷一位异性的QQ或其他软件"<<endl;
cin>>b;
cout<<endl;
cout<<"question five:"<<"想不想真心和Ta用情头?"<<endl;
cin>>c;
cout<<endl;
cout<<"question six:"<<"和Ta邂逅过吗?"<<endl;
cin>>d;
cout<<endl;
cout<<"question seven:"<<"吃过同一个饭碗里的东西吗?"<<endl;
cin>>e;
cout<<endl;
cout<<"question eight:"<<"有过一个人在梦里与Ta相遇吗?"<<endl;
cin>>f;
cout<<endl;
cout<<"question nine:"<<"有为了等Ta一个人站在风雨中吗?"<<endl;
cin>>g;
cout<<endl;
cout<<"question ten:"<<"想kissTa不,想摸Ta的头发吗?"<<endl;
cin>>h;
cout<<endl;
sum=n+m+a+b+c+d+e+f+g+h;
cout<<"正在测评中,请稍后..."<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
if(sum>=16&&sum<=20)
cout<<"你的恋爱指数为:A。你是一个深深爱着Ta的人,你往往会走到最后^-^。"<<endl;
if(sum<=15&&sum>=12)
cout<<"你的恋爱指数为:B。你是一个矛盾却又不失爱意的人,你的爱往往一波三折!-!。"<<endl;
if(sum<=11&&sum>=7)
cout<<"你的恋爱指数为:C。你是一个有点点情丝的人,你想表,却又惧怕现实,你仍须努力o-o。"<<endl;
if(sum<=6&&sum>=0)
cout<<"你的恋爱指数为:D。你是一个无暇无垢,不食人间烟火的人,想一路踏歌,证道路上需佳人陪伴+-+。"<<endl;
if(sum>20||sum<0)
cout<<"你出格了哟ooo.ooo"<<endl;
cout<<"人生在世,恍如昨世,孤独的身影终难走远,你的那个Ta就在不远方,就如漫天繁星,总有一颗属于你!"<<endl;\
cout<<"快抓紧你身边的那个Ta^-^oooooo"<<endl;
cout<<endl;
cout<<"作品创造者:yang sky one"<<endl;
cout<<"恋爱指数测试器已关闭,需重启………………"<<endl;
return 0;
参考技术C #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=32000;
struct Food /*食物的结构体*/

int x; /*食物的横坐标*/
int y; /*食物的纵坐标*/
int yes; /*食物是否出现的变量*/
food;
struct Snack /*蛇的结构体*/

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 PrScore(void); /*分数输出函数*/

DELAY(char ch)/*调节游戏速度*/

if(ch=='3')

delay(gamespeed); /*delay是延迟函数*/
delay(gamespeed);

else if(ch=='2')

delay(gamespeed);



Menu()/*游戏开始菜单*/

char ch;
printf("Please choose the gamespeed:\n");
printf("1-Fast 2-Normal 3-Slow\n");
printf("\nPlease Press The numbers..\n");
do
ch=getch();
while(ch!='1'&&ch!='2'&&ch!='3');
clrscr();
return(ch);


/*主函数*/
void main(void)

int ch;
ch=Menu();
Init();
DrawK();
GamePlay(ch);
Close();


void Init(void)

int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();


void DrawK(void)

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(char ch)

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) /*可以重复游戏*/

while(!kbhit()) /*在没有按键的情况下蛇自己移动*/

if(food.yes==1) /*需要食物*/

food.x=rand()%400+60;
food.y=rand()%350+60; /*使用rand函数随机产生食物坐标*/
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]; /*贪吃蛇的身体移动算法*/


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;i<snake.node;i++) /*判断是否头部与身体相撞*/

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

GameOver();
snake.life=1;
break;


/*下面是判断是否撞到墙壁*/
if(snake.x[0]595||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<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(gamespeed);
DELAY(ch);
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);


if(snake.life==1)
break;
key=bioskey(0); /*接受按键*/
if(key==ESC)
break;
else
if(key==UP&&snake.direction!=4)/*判断是否改变方向*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;



void GameOver(void)

cleardevice();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();


void PrScore(void)

char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"scord:%d",score);
outtextxy(55,20,str);

void Close(void)

getch();
closegraph();


贪吃蛇
参考技术D

注:使用Dev-C++编译运行!

#include <iostream>
#include <fstream>
#include <algorithm>
#include <map>
#include <conio.h>
#include <windows.h>
using namespace std;
int x=0,y=0;
/* Colors defined for SetColor(int) */ 
    enum
     
    BLACK = 0, 
    DARK_BLUE = 1, 
    DARK_GREEN = 2, 
    TEAL = 3, 
    DARK_RED = 4, 
    DARK_PURPLE = 5, 
    GOLD = 6, 
    GREY = 7, 
    DARK_WHITE = 8, 
    BLUE = 9, 
    GREEN = 10, 
    CYAN = 11, 
    RED = 12, 
    PURPLE = 13, 
    YELLOW = 14, 
    WHITE = 15, 
    ;
void SetColor(const int foreground, const int background)
     
         
        int Color = foreground + (background * 16); 
        HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
        SetConsoleTextAttribute(hConsole, Color); 
      
        return; 
      
    int cc;
int main()

    system("title Move 1.3");
    SetColor(BLUE,WHITE);
    
    
    int cc=getch();
    switch(cc)
    
        case 'a':
            if(x>0)x--;
            break;
        case 'd':
            if(x<76)x++;
                break;
        case 'w':
        if(y>0)y--;
            break;
        case 's':
        if(y<19)y++;
            break;
        case 27:
                if(MessageBox(FindWindow("ConsoleWindowClass",NULL),"Exit?","Question",MB_YESNO)==6)
                return 0;
    
    system("cls");
    for (int i=0;i<y;i++)cout<<'\\n';
    for (int i=0;i<x;i++)cout<<' ';
        
    cout<<"●";
    for (int i=y;i<20;i++)cout<<'\\n';
    SetColor(GOLD,WHITE);
cout<<"Esc -> Exit\\td ->right\\ta-> left\\tw -> up\\t        s -> down";
SYSTEMTIME sysTime;
    ZeroMemory(&sysTime, sizeof(sysTime));
    GetLocalTime(&sysTime);
    printf("\\nYear:%d    Month:%d    Day:%d(%d)    %d:%d:",sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wDayOfWeek,sysTime.wHour,sysTime.wMinute);
    if(sysTime.wSecond<10)printf("0");
    printf("%d",sysTime.wSecond);    
    main();
    return 0;

求帮助,电脑玩游戏会弹microsoft visual c++ runtime library是啥原因呢?

玩游戏会弹microsoft visual c++ runtime library:可能是由于软件损坏或者缺少VC 运行库导致。
1、可以下载VC++运行库,重新安装运行数据库
2、右键点击开始菜单,选择运行,输入【msconfig】后回车——
打开(系统配置实用程序)中选择启动,有启动项目,命令,位】。在查看命令下的路径是否和文件的报错路径一致。——有一致的路径文件,则取消方框中的勾选后选择应用关闭——在新弹出的窗口中选择【立即重启】。
3、重新安装这个游戏。
参考技术A 你这是缺少C++组件,搜索下载安装之后再运行 参考技术B 你重装游戏试试

以上是关于求C++小游戏源代码啊~的主要内容,如果未能解决你的问题,请参考以下文章

求大神改一下贪吃蛇C++代码

c++模板如何学好啊?愁,看不懂,求指导

OJ 系统执行c++的命令是g++ 。。。。 但是怎么编译执行java代码啊 光javac不行啊,求大牛帮忙。。只有10分

无权无向图,用邻接表存储,求各个顶点之间的最小边数,求c++或c代码。十分感谢啊

用回溯法求01背包问题,怎样使用C++模板啊,迫切求指点!

求C语言小游戏源程序