以下是貪吃蛇源代碼:
#include<iostream.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#define N 21
void gotoxy(int x,int y)//位置函數(shù)
{
COORD pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//顏色函數(shù)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[2])//初始化函數(shù)(初始化圍墻、顯示信息、蘋果)
{
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)//進(jìn)入消息循環(huán)
{
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])//吃掉蘋果后蛇分?jǐn)?shù)加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;
}
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
要源碼的,在評論里打個(gè)@,我先去做
#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) 之間的坐標(biāo)填充為 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 縱坐標(biāo)相同的前提下,把坐標(biāo) [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:無法填充行,因?yàn)閮蓚€(gè)坐標(biāo)的縱坐標(biāo)(x)不相等;
system(pause);
}
}
//把第x列,[y1, y2] 之間的坐標(biāo)填充為 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 橫坐標(biāo)相同的前提下,把坐標(biāo) [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àn)閮蓚€(gè)坐標(biāo)的橫坐標(biāo)(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 控制戰(zhàn)機(jī)移動。;
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();
//初始化其中一個(gè)
//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();
//填充其中一個(gè)
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<<擊落敵機(jī):<<score/5<< 架;
SetPos(31, 12);
cout<<得 分:<<score;
SetPos(31, 13);
cout<<獲得稱號:<<title;
SetPos(30, 16);
Sleep(1000);
cout<<繼續(xù)? 是(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();
}
一個(gè)戀愛小測試賊靈驗(yàn)哦
#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<<歡迎來到戀愛指數(shù)測試器*>-<*<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
cout<<獨(dú)家的哦*^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,一點(diǎn)也沒感覺輸入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:<<你是否面對異性時(shí)有莫名心跳?<<endl;
cin>>n;
cout<<endl;
cout<<question two:<<你是否有看到異性被撩時(shí)很憤怒?<<endl;
cin>>m;
cout<<endl;
cout<<question three:<<你是否懼怕見到一位異性的家長<<endl;
cin>>a;
cout<<endl;
cout<<question four:<<你是否經(jīng)常刷一位異性的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:<<吃過同一個(gè)飯碗里的東西嗎?<<endl;
cin>>e;
cout<<endl;
cout<<question eight:<<有過一個(gè)人在夢里與Ta相遇嗎?<<endl;
cin>>f;
cout<<endl;
cout<<question nine:<<有為了等Ta一個(gè)人站在風(fēng)雨中嗎?<<endl;
cin>>g;
cout<<endl;
cout<<question ten:<<想kissTa不,想摸Ta的頭發(fā)嗎?<<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<<你的戀愛指數(shù)為:A。你是一個(gè)深深愛著Ta的人,你往往會走到最后^-^。<<endl;
if(sum<=15&&sum>=12)
cout<<你的戀愛指數(shù)為:B。你是一個(gè)矛盾卻又不失愛意的人,你的愛往往一波三折!-!。<<endl;
if(sum<=11&&sum>=7)
cout<<你的戀愛指數(shù)為:C。你是一個(gè)有點(diǎn)點(diǎn)情絲的人,你想表,卻又懼怕現(xiàn)實(shí),你仍須努力o-o。<<endl;
if(sum<=6&&sum>=0)
cout<<你的戀愛指數(shù)為:D。你是一個(gè)無暇無垢,不食人間煙火的人,想一路踏歌,證道路上需佳人陪伴+-+。<<endl;
if(sum>20||sum<0)
cout<<你出格了喲ooo.ooo<<endl;
cout<<人生在世,恍如昨世,孤獨(dú)的身影終難走遠(yuǎn),你的那個(gè)Ta就在不遠(yuǎn)方,就如漫天繁星,總有一顆屬于你!<<endl;\
cout<<快抓緊你身邊的那個(gè)Ta^-^oooooo<<endl;
cout<<endl;
cout<<作品創(chuàng)造者:yang sky one<<endl;
cout<<戀愛指數(shù)測試器已關(guān)閉,需重啟………………<<endl;
return 0;
}
#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 /*食物的結(jié)構(gòu)體*/
{
int x; /*食物的橫坐標(biāo)*/
int y; /*食物的縱坐標(biāo)*/
int yes; /*食物是否出現(xiàn)的變量*/
}food;
struct Snack /*蛇的結(jié)構(gòu)體*/
{
int x[N];
int y[N];
int node; /*蛇的節(jié)數(shù)*/
int direction; /*蛇的方向*/
int life; /*蛇的生命,0活著,1死亡*/
}snake;
void Init(void); /*圖形驅(qū)動*/
void Close(void); /*關(guān)閉游戲函數(shù)*/
void DrawK(void); /*畫圖函數(shù)*/
void GameOver(void);/*輸出失敗函數(shù)*/
void GamePlay(); /*游戲控制函數(shù) 主要程序*/
void PrScore(void); /*分?jǐn)?shù)輸出函數(shù)*/
DELAY(char ch)/*調(diào)節(jié)游戲速度*/
{
if(ch=='3')
{
delay(gamespeed); /*delay是延遲函數(shù)*/
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);
}
/*主函數(shù)*/
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(); /*隨機(jī)數(shù)發(fā)生器*/
food.yes=1; /*1代表要出現(xiàn)食物,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) /*可以重復(fù)游戲*/
{
while(!kbhit()) /*在沒有按鍵的情況下蛇自己移動*/
{
if(food.yes==1) /*需要食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60; /*使用rand函數(shù)隨機(jī)產(chǎn)生食物坐標(biāo)*/
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++; /*判斷食物是否出現(xiàn)在整格里*/
food.yes=0; /*現(xiàn)在有食物了*/
}
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) /*如果死亡就退出循環(huán)*/
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; /*現(xiàn)把增加的一節(jié)放到看不到的地方去*/
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();
}
貪吃蛇
注:使用Dev-C++編譯運(yùn)行!
#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;
}
