❶ 用C語言編寫的小游戲代碼是什麼
/*也不知道你是什麼級別的,我是一個新手,剛接觸編程語言,以下是我自己變得一個小程序,在所有c語言的編譯器(vc++6.0、turbo????)上都能運行,你還可以進一步改進。這是一個類似貪吃蛇的小游戲。祝你好運*/x0dx0a/*貪吃蛇*/x0dx0a#include
❷ c++編程小游戲代碼
以下是貪吃蛇源代碼:
#include<iostream.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#defineN21
voidgotoxy(intx,inty)//位置函數{
COORDpos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
voidcolor(inta)//顏色函數{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
voidinit(intapple[2])//初始化函數(初始化圍牆、顯示信息、蘋果)
{
inti,j;//初始化圍牆
intwall[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<<"■";
elsecout<<"□";
}
cout<<endl;
}
gotoxy(N+3,1);//顯示信息
color(20);
cout<<"按WSAD移動方向"<<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;
}
intmain()
{
inti,j;
int**snake=NULL;
intapple[2];
intscore=0;
inttail[2];
intlen=3;
charch='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);
}
}
return0;
}
❸ 用vc或c++編寫的一個小游戲代碼,要有源代碼,
#include<graphics.h>
#include<stdlib.h>
#include<dos.h>
#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]<55||snake.x[0]>595||snake.y[0]<55||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();
}
貪吃蛇
❹ 求個用VC++C語言編寫的小游戲
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
int random();
int mopai(int shan);
int yourchusha(int shan);
int i,xingcan=0,temp,choice;
int yoursha=0,yourshan=0;
int itssha=0,itsshan=0;
int yourhp=4,itshp=4;
printf("三國殺簡易版:\n");
printf("開始游戲:\n");
srand( (unsigned)time( NULL ) );
for(i=1;i<=4;i++)
{
random();//random() 方法可返回介於 0 ~ 1 之間的一個隨機數。
if(!random())
yourshan+=1;
else yoursha+=1;
}
for(i=1;i<=4;i++)
{
random();
if(!random())
itsshan+=1;
else itssha+=1;
}
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
while(yourhp&&itshp)
{
printf("\n你的行動開始:\n");
printf("\n摸牌階段:\n");
temp=mopai(xingcan);
yourshan+=temp;
yoursha+=(2-temp);
xingcan=0;
printf("你的手牌:殺%d張,閃%d張\n",yoursha,yourshan);
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
printf("\n出牌階段:\n");
printf("請選擇:\n");
printf("1.出殺 2.棄牌\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2)
printf("輸入錯誤,請重新輸入\n");
else break;
}
if(choice==1)
{
if(yoursha)
{
yoursha-=1;
if(yourchusha(itsshan))
itsshan-=1;
else
{
itshp-=1;
}
}
else printf("你沒有殺,請棄牌\n");
}
if(!itshp)
break;
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
printf("棄牌階段:\n");
while(yoursha+yourshan-yourhp>0)
{
printf("你需要棄掉%d張卡牌,請逐張棄牌:\n",yoursha+yourshan-yourhp);
printf("1.棄一張殺 2.棄一張閃\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2)
printf("輸入錯誤,請重新輸入\n");
else break;
}
switch(choice)
{
case 1:
{
if(yoursha)
yoursha-=1;
else printf("你沒有殺,請重新選擇\n");
break;
}
case 2:
{
if(yourshan)
yourshan-=1;
else printf("你沒有閃,請重新選擇\n");
break;
}
}
}
printf("你的行動結束。\n");
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
printf("計算機的行動開始:\n");
printf("摸牌階段:\n");
temp=mopai(xingcan);
itsshan+=temp;
itssha+=(2-temp);
xingcan=0;
printf("計算機手牌數:%d張\n",itssha+itsshan);
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
printf("出牌階段:\n");
if(itssha)
{
itssha-=1;
printf("殺\n");
printf("計算機對你出了一張殺,請出一張閃\n");
printf("1.確定 2.取消\n");
while(1)
{
scanf("%d",&choice);
if(choice!=1&&choice!=2){
printf("輸入錯誤,請重新輸入\n");
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機的手牌:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
}
else break;
}
switch(choice)
{
case 1:
{
if(yourshan)
{
yourshan-=1;
printf("閃\n");
break;
}
else printf("你沒有閃\n");
}
case 2:
{
yourhp-=1;
printf("計算機對你造成一點傷害\n");
}
}
}
if(!yourhp)
break;
printf("計算機手牌數:%d張\n",itssha+itsshan);
printf("棄牌階段:\n");
if(itssha+itsshan-itshp>0)
{
if(itshp>itsshan)
{
printf("計算機棄殺%d張\n",itssha+itsshan-itshp);
itssha-=(itssha+itsshan-itshp);
}
else
{
printf("計算機棄殺%d張,閃%d張\n",itssha,itsshan-itshp);
itssha=0;
itsshan=itshp;
}
}
printf("計算機的行動結束。\n");
printf("\n按任意鍵繼續\n");
getch();
system("cls");
printf("你的手牌:殺%d張,閃%d張\t",yoursha,yourshan);
printf("計算機手牌數:%d張\n",itssha+itsshan);
printf("你的體力:%d\t",yourhp);
printf("計算機的體力:%d\n",itshp);
}
if(!yourhp)
printf("很遺憾,計算機擊敗了你\n");
else printf("恭喜你,你擊敗了計算機\n");
printf("游戲結束,歡迎下次再來!\n");
printf("\n按任意鍵退出。");
getch();
return 0;
}
int random()
{
return rand()%3;
}
int mopai(int shan)
{
int i;
srand( (unsigned)time( NULL ) );
for(i=1;i<=2;i++)
{
random();
if(!random())
shan+=1;
}
return shan;
}
int yourchusha(int shan)
{
printf("殺 ");
if(shan)
{
printf("閃\n");
return 1;
}
else
{
printf("您對計算機造成一點傷害\n");
return 0;
}
}
❺ 用「vc」或「c++」編寫的一個小游戲代碼,源代碼是什麼
#include ❻ c語言小游戲代碼 「貪吃蛇」C代碼,在dev C++試驗通過(用4個方向鍵控制) #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h> #include <Windows.h> #define W 78 //游戲框的寬,x軸 #define H 26 //游戲框的高,y軸 int dir=3; //方向變數,初值3表示向「左」 int Flag=0; //吃了食物的標志(1是0否) int score=0; //玩家得分 struct food{ int x; //食物的x坐標 int y; //食物的y坐標 }fod; //結構體fod有2個成員 struct snake{ int len; //蛇身長 int speed; //移動速度 int x[100]; //蛇身某節x坐標 int y[100]; //蛇身某節y坐標 }snk; //結構體snk有4個成員 void gtxy( int x,int y) //控制游標移動的函數 { COORD coord; coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } void gtxy( int x,int y); //以下聲明要用到的幾個自編函數 void csh( ); //初始化界面 void keymove( ); //按鍵操作移動蛇 void putFod( ); //投放食物 int Over( ); //游戲結束(1是0否) void Color(int a); //設定顯示顏色的函數 int main( ) //主函數 { csh( ); while(1) { Sleep(snk.speed); keymove( ); putFod( ); if(Over( )) { system(「cls」); gtxy(W/2+1,H/2); printf(「游戲結束!T__T」); gtxy(W/2+1,H/2+2); printf(「玩家總分:%d分」,score); getch( ); break; } } return 0; } void csh( ) //初始化界面 { int i; gtxy(0,0); CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下兩行是隱藏游標的設置 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); for(i=0;i<=W;i=i+2) //橫坐標要為偶數,因為這個要列印的字元佔2個位置 {Color(2); //設定列印顏色為綠色 gtxy(i,0); printf("■"); //列印上邊框 gtxy(i,H); printf("■"); //列印下邊框 } for(i=1;i<H;i++) { gtxy(0,i); printf("■"); //列印左邊框 gtxy(W,i); printf("■"); //列印右邊框 } while(1) { srand((unsigned)time(NULL)); //初始化隨機數發生器srand( ) fod.x=rand()%(W-4)+2; //隨機函數rand( )產生一個從0到比」(W-4)」小1的數再加2 fod.y=rand()%(H-2)+1; //隨機函數rand( )產生一個從0到比」(H-2)」小1的數再加1 if (fod.x%2==0) break; //fod.x是食物的橫坐標,要是2的倍數(為偶數) } Color(12); //設定列印顏色為淡紅 gtxy(fod.x,fod.y); printf("●"); //到食物坐標處列印初試食物 snk.len=3; //蛇身長初值為3節 snk.speed=350; //刷新蛇的時間,即移動速度初值為350毫秒 snk.x[0]=W/2+1; //蛇頭橫坐標要為偶數(因為W/2=39) snk.y[0]=H/2; //蛇頭縱坐標 Color(9); //設定列印顏色為淡藍 gtxy(snk.x[0], snk.y[0]); printf("■"); //列印蛇頭 for(i=1;i<snk.len;i++) { snk.x[i]=snk.x[i-1]+2; snk.y[i]=snk.y[i-1]; gtxy(snk.x[i],snk.y[i]); printf("■"); //列印蛇身 } Color(7, 0); //恢復默認的白字黑底 return; } void keymove( ) //按鍵操作移動蛇 { int key; if( kbhit( ) ) //如有按鍵輸入才執行下面操作 { key=getch( ); if (key==224) //值為224表示按下了方向鍵,下面要再次獲取鍵值 { key=getch( ); if(key==72&&dir!=2)dir=1; //72表示按下了向上方向鍵 if(key==80&&dir!=1)dir=2; //80為向下 if(key==75&&dir!=4)dir=3; //75為向左 if(key==77&&dir!=3)dir=4; //77為向右 } if (key==32) { while(1) if((key=getch( ))==32) break; } //32為空格鍵,這兒用來暫停 } if (Flag==0) //如沒吃食物,才執行下面操作擦掉蛇尾 { gtxy(snk.x[snk.len-1],snk.y[snk.len-1]); printf(" "); } int i; for (i = snk.len - 1; i > 0; i--) //從蛇尾起每節存儲前一節坐標值(蛇頭除外) { snk.x[i]=snk.x[i-1]; snk.y[i]=snk.y[i-1]; } switch (dir) //判斷蛇頭該往哪個方向移動,並獲取最新坐標值 { case 1: snk.y[0]--; break; //dir=1要向上移動 case 2: snk.y[0]++; break; //dir=2要向下移動 case 3: snk.x[0]-=2; break; //dir=3要向左移動 case 4: snk.x[0]+=2; break; //dir=4要向右移動 } Color(9); gtxy(snk.x[0], snk.y[0]); printf("■"); //列印蛇頭 if (snk.x[0] == fod.x && snk.y[0] == fod.y) //如吃到食物則執行以下操作 { printf("7"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //7是響鈴 else Flag = 0; //沒吃到食物Flag的值為0 if(snk.speed<150) snk.speed= snk.speed+5; //作弊碼,不讓速度無限加快 } void putFod( ) //投放食物 { if (Flag == 1) //如吃到食物才執行以下操作,生成另一個食物 { while (1) { int i,n= 1; srand((unsigned)time(NULL)); //初始化隨機數發生器srand( ) fod.x = rand( ) % (W - 4) + 2; //產生在游戲框范圍內的一個x坐標值 fod.y = rand( ) % (H - 2) + 1; //產生在游戲框范圍內的一個y坐標值 for (i = 0; i < snk.len; i++) //隨機生成的食物不能在蛇的身體上 { if (fod.x == snk.x[i] &&fod.y == snk.y[i]) { n= 0; break;} } if (n && fod.x % 2 == 0) break; //n不為0且橫坐標為偶數,則食物坐標取值成功 } Color(12); //設定字元為紅色 gtxy(fod.x, fod.y); printf("●"); //游標到取得的坐標處列印食物 } return; } int Over( ) //判斷游戲是否結束的函數 { int i; Color(7); gtxy(2,H+1); printf(「暫停鍵:space.」); //以下列印一些其它信息 gtxy(2,H+2); printf(「游戲得分:%d」,score); if (snk.x[0] == 0 || snk.x[0] == W) return 1; //蛇頭觸碰左右邊界 if (snk.y[0] == 0 || snk.y[0] == H) return 1; //蛇頭觸碰上下邊界 for (i = 1; i < snk.len; i++) { if (snk.x[0] == snk.x[i] && snk.y[0] == snk.y[i]) return 1; } //蛇頭觸碰自身 return 0; //沒碰到邊界及自身時就返回0 } void Color(int a) //設定顏色的函數 { SetConsoleTextAttribute(GetStdHandle( STD_OUTPUT_HANDLE ),a ); }