C語言實(shí)現(xiàn)飛機(jī)小游戲
更新時(shí)間:2020年12月28日 17:13:02 作者:xiaoChhhhh
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)飛機(jī)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)飛機(jī)小游戲的具體代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h>
#include<windows.h>
int zdj_x,zdj_y;
int zd_x,zd_y;
int dj_x,dj_y;
int speed;
int map[21][41];
int score;
int H=20,C=40;
//墻是1;飛機(jī)2;子彈3;敵機(jī)4;
void start()//設(shè)置初始值
{
zdj_x=15;
zdj_y=20;
zd_x=0;
zd_y=20;
dj_x=2;
dj_y=15;
score=0;
}
void startMAP()//繪制戰(zhàn)場(chǎng)框架
{
int i, j;
for (i = 1; i <=19; i++)
{
map[i][1] = 1;
for (j = 2; j <=39; j++)
{
map[i][j] = 0;
map[i][40] = 1;
}
}
i = 20;
for (j = 1; j <= 40; j++)
{
map[i][j] = 1;
}
map[zd_x][zd_y] = 3;
map[zdj_x ][zdj_y] = 2;
map[dj_x][dj_y+1] = 4;
}
void HideCursor()//隱藏光標(biāo)
{
CONSOLE_CURSOR_INFO cursor_info={1,0};//0表示對(duì)光標(biāo)的隱藏
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void gotoxy(int x,int y)//清屏,使屏幕保持
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle,pos);
}
void upguize()//游戲規(guī)則(不唯一)如果有其他想法可以加入
{
int i,j;
if(zd_x>0)//子彈單軌
{
zd_x--;
}
if((zd_x==dj_x)&&(zd_y==dj_y+1))//打中規(guī)則
{
score++;
dj_x=0;
dj_y=rand()%40;
zd_x=0;
}
if(dj_x>20)//敵機(jī)出界
{
dj_x=0;
dj_y=rand()%40;
}
static int speed=0;//靜態(tài)控制speed
if(speed<10)//速度控制
{
speed++;
}
if(speed==10)
{
if(dj_x<20)
dj_x++;
else
{
dj_x=0;
dj_y=rand()%39+1;
}
speed=0;
}
}
void upinput()//對(duì)按鍵的處理以
{
char input;
if(kbhit())//if(kbhit)判斷鍵盤是否進(jìn)行操作
{
input=getch();
if((input=='w')&&(zdj_x>1))//防止飛機(jī)走出戰(zhàn)場(chǎng)框架
{
zdj_x--;
}
if((input=='a')&&(zdj_y>2))
{
zdj_y--;
}
if((input=='s')&&(zdj_x<19))
{
zdj_x++;
}
if((input=='d')&&(zdj_y<39))
{
zdj_y++;
}
if(input==' ')
{
zd_x=zdj_x-1;
zd_y=zdj_y;
}
}
}
void show()//對(duì)數(shù)組中對(duì)應(yīng)數(shù)的字符表達(dá),繪制地圖
{
int i,j;
for(i=1;i<=20;i++)
{
for(j=1;j<=40;j++)
{
if(map[i][j]==0)
{
printf(" ");
}
if(map[i][j]==1)
{
printf("+");
}
if(map[i][j]==2)
{
printf("*");
}
if(map[i][j]==3)
{
printf("|");
}
if(map[i][j]==4)
{
printf("#");
}
}
printf("\n");
}
printf("\n%d\n",score);
printf("按'w''a''s''d'進(jìn)行移動(dòng)");
}
int main()//代碼總運(yùn)行
{
system("color a4");//a控制背景色4控制前景色
start();
while(1)
{
gotoxy(0,0);//使光標(biāo)處于(0,0)位置
HideCursor();
startMAP();
show();
upguize();
upinput();
}
return 0;
}
游戲界面

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
opencv3/C++ 使用Tracker實(shí)現(xiàn)簡(jiǎn)單目標(biāo)跟蹤
今天小編就為大家分享一篇opencv3/C++ 使用Tracker實(shí)現(xiàn)簡(jiǎn)單目標(biāo)跟蹤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
基于Matlab實(shí)現(xiàn)繪制3D足球的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Matlab實(shí)現(xiàn)繪制3D足球,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下2022-11-11
C++右值引用與move和forward函數(shù)的使用詳解
為了支持移動(dòng)操作,新標(biāo)準(zhǔn)引入了一種新的引用類型——右值引用(rvalue reference)。所謂右值引用就是必須綁定到右值的引用,這篇文章主要介紹了C++右值引用與move和forward的使用2022-08-08

