求C++小游戲源代碼啊~ 用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)//位置函數(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 移動(dòng)方向"<<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,蛇長(zhǎng)加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;
}
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(gè)@,我先去做
要源碼的,在評(píng)論里打個(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:無(wú)法填充行,因?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:無(wú)法填充列,因?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<<"稱號(hào):";
SetPos(52,10);
cout<<"操作方式:";
SetPos(52,12);
cout<<" a,s,d,w 控制戰(zhàn)機(jī)移動(dòng)。";
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. 簡(jiǎn)單的敵人";
SetPos(15, 13);
cout<<"2. 冷酷的敵人";
drawRow(20, 0, 79, '-');
drawRow(22, 0, 79, '-');
SetPos(47, 11);
cout<<"簡(jiǎn)單的敵人:";
SetPos(51, 13);
cout<<"簡(jiǎn)單敵人有著較慢的移動(dòng)速度。";
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<<"簡(jiǎn)單的敵人:";
SetPos(51, 13);
cout<<"簡(jiǎn)單敵人有著較慢的移動(dòng)速度,比較容易對(duì)付";
}
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<<"冷酷的敵人移動(dòng)速度較快,難對(duì)付喲。";
}
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="初級(jí)飛行員";
else if( x == 4)
title="中級(jí)飛行員";
else if( x == 3)
title="高級(jí)飛行員";
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<<"獲得稱號(hào):"<<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è)戀愛小測(cè)試賊靈驗(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<<"歡迎來(lái)到戀愛指數(shù)測(cè)試器*>-<*"<<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<<"下列問(wèn)題如果是則輸入2,如果不是則輸入1,一點(diǎn)也沒(méi)感覺(jué)輸入0"<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
cout<<"加油,面對(duì)你自己!*-o-*"<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
cout<<"question one:"<<"你是否面對(duì)異性時(shí)有莫名心跳?"<<endl;
cin>>n;
cout<<endl;
cout<<"question two:"<<"你是否有看到異性被撩時(shí)很憤怒?"<<endl;
cin>>m;
cout<<endl;
cout<<"question three:"<<"你是否懼怕見到一位異性的家長(zhǎng)"<<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邂逅過(guò)嗎?"<<endl;
cin>>d;
cout<<endl;
cout<<"question seven:"<<"吃過(guò)同一個(gè)飯碗里的東西嗎?"<<endl;
cin>>e;
cout<<endl;
cout<<"question eight:"<<"有過(guò)一個(gè)人在夢(mèng)里與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<<"正在測(cè)評(píng)中,請(qǐng)稍后..."<<endl;
for(int i=1;i<=1000000000;i++)
l=i;
if(sum>=16&&sum<=20)
cout<<"你的戀愛指數(shù)為:A。你是一個(gè)深深愛著Ta的人,你往往會(huì)走到最后^-^。"<<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è)無(wú)暇無(wú)垢,不食人間煙火的人,想一路踏歌,證道路上需佳人陪伴+-+。"<<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ù)測(cè)試器已關(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ū)動(dòng)*/
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()) /*在沒(méi)有按鍵的情況下蛇自己移動(dòng)*/
{
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) /*有食物了就要顯示出來(lái)*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--) /*貪吃蛇的移動(dòng)算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1]; /*貪吃蛇的身體移動(dòng)算法*/
}
switch(snake.direction) /*貪吃蛇的頭部移動(dòng)算法,以此來(lái)控制移動(dòng)*/
{
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); /*每次移動(dòng)后將后面的身體擦去*/
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<<'
';
for (int i=0;i<x;i++)cout<<' ';
cout<<"●";
for (int i=y;i<20;i++)cout<<'
';
SetColor(GOLD,WHITE);
cout<<"Esc -> Exitd ->righta-> leftw -> up s -> down";
SYSTEMTIME sysTime;
ZeroMemory(&sysTime, sizeof(sysTime));
GetLocalTime(&sysTime);
printf("
Year:%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;
}
用C\/C++編寫小游戲:6.3 推箱子撤消與重做
完整實(shí)現(xiàn)這些改動(dòng)后,你可以從作者的Gitee開源程序庫(kù)(gitee.com\/devcpp\/cgames)下載更新后的源代碼cgame6(boxes)v2.cpp。接下來(lái),我們將繼續(xù)探討隱藏與顯示光標(biāo)和數(shù)據(jù)保存與讀取的技巧。繼續(xù)閱讀:接下來(lái)的部分:Anbang24:用C\/C++編寫小游戲:6.4 隱藏與顯示光標(biāo),6.5 數(shù)據(jù)保存與讀取 ...
誰(shuí)可以幫我用C語(yǔ)言做一個(gè)簡(jiǎn)單(一種花色就可以)的蜘蛛紙牌小游戲...
1-52都做過(guò)基數(shù)了,翻牌的時(shí)候不用把基數(shù)也翻了吧?要是把基數(shù)也翻了,肯定不會(huì)有正面向上的牌啊...以數(shù)組模擬卡片 TRUE向上 FALSE向下 循環(huán)模擬翻卡片 滿足條件 card[i]=!card[i];最后輸出值為TRUE的數(shù)組元素 include <stdio.h> include <string.h> int main(){ bool card[52];memset...
求簡(jiǎn)單C語(yǔ)言程序代碼!
輸入2個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù) include include int main()int m,n,p,q,s,r;printf("請(qǐng)輸入兩個(gè)正整數(shù);m,n\\n");scanf("%d,%d",&m,&n);include<stdio.h> main()int a,b,t=0;scanf("%d %d",&a,&b);if (a...
初學(xué)C\/C++能做什么?C++簡(jiǎn)單實(shí)現(xiàn)字符界面五子棋小游戲【附源碼】_百度知...
本文為一大學(xué)新生分享其自學(xué)C\/C++后,利用所學(xué)知識(shí)實(shí)現(xiàn)的字符界面五子棋小游戲。該開發(fā)者在大一時(shí)即產(chǎn)生了在Windows環(huán)境下開發(fā)五子棋小游戲的想法,并在大一上學(xué)期成功實(shí)踐。隨著學(xué)習(xí)Linux,開發(fā)者決定將游戲移植至Linux系統(tǒng)中。移植過(guò)程中遇到的主要問(wèn)題包括Linux環(huán)境下不支持Windows系統(tǒng)中的_kbhit()和_...
C\/C++游戲項(xiàng)目教程:看完只會(huì)說(shuō)“編譯飛機(jī)大戰(zhàn)太簡(jiǎn)單了吧”
至此,基礎(chǔ)的飛機(jī)大戰(zhàn)小游戲代碼框架搭建完成。當(dāng)然,這只是一個(gè)開始,后續(xù)我們還將發(fā)布更多游戲項(xiàng)目源碼以及詳盡的學(xué)習(xí)資料,致力于為程序員提供一個(gè)全方位的學(xué)習(xí)和成長(zhǎng)平臺(tái)。歡迎持續(xù)關(guān)注,并將這份教程分享給有志于編程學(xué)習(xí)的朋友。如果你覺(jué)得這篇教程對(duì)你有所幫助,記得點(diǎn)贊和關(guān)注哦!有任何問(wèn)題或建議,...
java簡(jiǎn)單代碼小游戲?
具體的來(lái)說(shuō),Python可以將任意長(zhǎng)的代碼寫在一行上(其實(shí)好像java也可以這么干)。所以行數(shù)說(shuō)明不了什么問(wèn)題。平均來(lái)看,Java要打100行的代碼,Python大約需要50行代碼左右。求java小游戲源代碼1、單人版五子棋,不用導(dǎo)入,直接新建一個(gè)mywindow類就行,然后把一下代碼粘貼就Ok了。或者,直接用dos就可以...
C語(yǔ)言課程設(shè)計(jì),貪吃蛇應(yīng)該怎么做?
用一個(gè)小矩形表示蛇的一節(jié)身體,身體每長(zhǎng)一節(jié),增加一個(gè)矩形塊,蛇頭用兩節(jié)表示: 圖2.4程序結(jié)果圖 蛇沒(méi)有碰到自己或墻壁,蛇繼續(xù)前進(jìn): 圖2.5程序結(jié)果圖 游戲結(jié)束時(shí),顯示“GAME OVER” 圖2.6程序結(jié)果圖 2.3程序源代碼及注釋 #define N 200 #include <graphics.h> #include <stdlib.h> #include <dos.h> #defi...
c語(yǔ)言編寫游戲軟件有哪些
C語(yǔ)言編寫小游戲確實(shí)是個(gè)不錯(cuò)的選擇,它不僅能夠鍛煉編程能力,還能帶來(lái)很多樂(lè)趣。首先,推薦使用EasyX,這是一款針對(duì)初學(xué)者設(shè)計(jì)的圖形庫(kù)。它簡(jiǎn)化了Windows系統(tǒng)中的許多函數(shù),使得C++編程變得更加容易上手。官網(wǎng)提供了豐富的教程和源代碼,非常適合初學(xué)者學(xué)習(xí)和參考。此外,這里還展示了一些由用戶創(chuàng)作的小作品...
C語(yǔ)言什么水平能做掃雷游戲C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)掃地雷游戲怎么做
4,C語(yǔ)言學(xué)到什么程度可以做個(gè)小游戲如果單純是小游戲的算法的話,半年時(shí)間就夠了。但是如果涉及圖形窗口的處理,至少要學(xué)一年的功夫。c語(yǔ)言編游戲需要用到很多函數(shù),建議可以在學(xué)習(xí)完基礎(chǔ)知識(shí)后,找一些簡(jiǎn)單的小游戲來(lái)學(xué)習(xí)和練習(xí)函數(shù)的運(yùn)用和程序的編譯思想5,c 達(dá)到什么水平 可以 編出 掃雷 五子棋...
怎樣運(yùn)行java小游戲,我只有源代碼可是不知道怎么運(yùn)行
就是把安裝目錄的地址拷貝到里面就好了,略有不同這兩個(gè)參數(shù)的設(shè)置.安裝完成后,把源代碼文件的目錄記下,源代碼拷貝到記事本上,把后綴名改成".java";打開CMD窗口,先執(zhí)行"javac 文件名.java"命令,在目錄下會(huì)生成一個(gè)".class"的文件,那是編譯生成的文件,如果順利通過(guò)編譯,說(shuō)明源代碼沒(méi)錯(cuò)誤,OK,你再...
相關(guān)評(píng)說(shuō):
漢臺(tái)區(qū)大齒: ______ #include#include #include void show(int input) { switch(input) { case 0:cout<<("出的是石頭!"); break; case 1:cout<<("出的是剪子!"); break; case 2:cout<<("出的是布!"); break; default:; } } void compare(int inputPlay,int ...
漢臺(tái)區(qū)大齒: ______ #include #include void show(int input) { switch(input) { case 0:cout>inputPlay; if(inputPlay>=0&&inputPlay>isGoOn; }while(isGoOn!='N'||isGoOn!='n'); }
漢臺(tái)區(qū)大齒: ______ 用c++實(shí)現(xiàn)的"貪吃蛇"游戲源碼 // greedsnake.cpp #include <bios.h> #include <conio.h> #include <dos.h> #include <graphics.h> #include <stdlib.h> #include <time.h> #include "conf.h" typedef struct node { int x,y; struct node *next; }Node; ...
漢臺(tái)區(qū)大齒: ______ 樓主20分你也就能買來(lái) 我說(shuō)的這幾個(gè)文字的 一個(gè)很小的c++游戲(例如是男人就下100層這些)差不多也要3,4天的時(shí)間 幾乎沒(méi)人會(huì)為你這20分去干這么累的事(無(wú)利不起早) 如果是人家以前寫的話有1%的可能會(huì)給你(看人家的心情了) 你可以去各大程序或者原創(chuàng)游戲網(wǎng)站看看 有個(gè)別的人把源碼也發(fā)出來(lái)了 你可以借鑒下
漢臺(tái)區(qū)大齒: ______ C++編寫 猜數(shù)字小游戲 #include <iostream.h> #include <ctime> #include <cstdlib> void main(){ cout<<"猜數(shù)字游戲正式開始,請(qǐng)把握機(jī)會(huì)!"<<endl; int x,y; char z; do{ int i=1; srand(time(0)); y=rand()%1000; cout<<endl<<"系統(tǒng)已經(jīng)隨機(jī)生成0...
漢臺(tái)區(qū)大齒: ______ 我這個(gè)很好#include#include#include int f(int i,int j,int s);int n[9][9];int line[9][9],column[9][9],block[9][9];char youxi[9][9];i...
漢臺(tái)區(qū)大齒: ______ #include<iostream>#include<cstdlib> #include<ctime> using namespace std; class Guess { public: Guess(); int compare(int _a); int count; private: int a; }; Guess::Guess() { srand(time(0)); a=rand()%99+1; count=0; } int Guess::compare(int _a) { ...
漢臺(tái)區(qū)大齒: ______ 在sin按鈕的callback函數(shù)里寫:plot(handles.axes1,sin([0:0.01:10]));其實(shí)就是在sin的callback下面畫一個(gè)正弦函數(shù)圖,主要是要畫在axes1里,所以在plot括號(hào)里最前方寫handles.axes1.
漢臺(tái)區(qū)大齒: ______ Windows自帶的掃雷游戲源代碼 C++的或/類名:main // 說(shuō)明:英文單詞拼寫檢查...
漢臺(tái)區(qū)大齒: ______ #include"stdio.h"#define N 17 void main(){ int a,b,temp,i,j,k,l,m,n; int num[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}; int *ptr; printf("開始元素序號(hào):"); scanf("%d",&a); printf("報(bào)幾出列:"); scanf("%d",&b); ptr=&num[a-1]; ...