c语言最简单飞机游戏代码(c语言飞机小游戏代码)

http://www.itjxue.com  2023-02-03 00:04  来源:未知  点击次数: 

c语言实现控制台飞机大战游戏,有办法使用一个函数实现按一下空格发一颗子弹?

给子弹也弄个结构体,存储pos,speed,length等信息,弄个更新(显示)子弹的函数,在主循环里不断调用这个函数

C语言飞机的小游戏中,击中敌机这部分怎么理解y+2=ny这部分

= 是赋值运算符 因此:

( y+2=ny ) 是大家都容易范的错误(包括我在内)

== 是比较运算符

(y+2==ny)将输出 true 或 false

因此:可以理解为 if ( true ) isKilled = 1;

请教:怎么做炸飞机游戏(c/c++工具)?给出具体解决思路和代码实现!有重谢!!!

直接用二维数组,记录田字格。值0为空、1为有飞机、2为飞机被炸、3为炸空

1、初始化,读取飞机数,随机置1

2、根据输入的坐标,直接将该坐标从0-3或1-2,然后做其他逻辑处理

请问用C语言写的小游戏,这个飞机为什么要用第一种代码来写?

1图是先输出y个空格,然后输出一个*然后换行,再输出y个空格,在输出一次一行的*再换行的那种

2图是输出一个空格再输出一个*,在输出一个空格再输出一行的*.......循环y次,2个输出的图案自然就不一样了

求C++飞机大战的代码(有注释的最好)

#includeiostream

#includewindows.h

#includeconio.h

#includetime.h

#includestring

using?namespace?std;

/*===============?all?the?structures?===============*/

typedef?struct?Frame

{

COORD?position[2];

int?flag;

}Frame;

/*===============?all?the?functions?===============*/

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++)

coutch;

}

//在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);

coutch;

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");

}

}

//左上角坐标、右下角坐标、用row填充行、用col填充列

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?退出游戏。";

}

//在[a,?b)之间产生一个随机整数

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);

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;

}

*/

/*==================?the?Game?Class?==================*/

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;?i9;?i++)

{

SetPos(position[i]);

if(i!=5)

cout"O";

else?if(i==5)

cout"|";

}

}

void?Game::drawPlaneToNull()

{

for(int?i=0;?i9;?i++)

{

SetPos(position[i]);

cout"?";

}

}

void?Game::initBullet()

{

for(int?i=0;?i10;?i++)

bullet[i].Y?=?30;

}

void?Game::drawBullet()

{

for(int?i=0;?i10;?i++)

{

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

{

SetPos(bullet[i]);

cout"^";

}

}

}

void?Game::drawBulletToNull()

{

for(int?i=0;?i10;?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;?i8;?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;?i8;?i++)

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

}

void?Game::drawEnemyToNull()

{

for(int?i=0;?i8;?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;?i10;?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;?i8;?i++)

{

for(int?j=0;?j2;?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;?j9;?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;?i10;?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);

coutscore;

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="王牌飞行员";

couttitle;

}

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;?istr.size();?i++)

{

Sleep(80);

coutstr[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;

}

/*==================?the?main?function?==================*/

int?main()

{

//游戏准备

srand((int)time(0)); //随机种子

HideCursor(); //隐藏光标

Game?game;

int?a?=?drawMenu();

if(a?==?2)

game.rank?=?20;

system("cls");

drawPlaying();

game.Playing();

}

绝对可以运行,望采纳

飞机的C语言程序代码

我有坦克的

#include stdio.h

#include stdlib.h

#include string.h

#define LENTH 7

#define WIDTH 155

#define SLEEP_TIME 30000

#define ENTER_NUM 20

char fun_ascii[LENTH][WIDTH] = {

" | ",

" _\\--__|_ ",

" II=======OOOOO[/ *02 ___| ",

" ____\\______|/-----.",

" /____________________|",

" \\@@@@@@@@@@@@@@@@@@@/ ",

" ~~~~~~~~~~~~~~~~~~~ "

};

int g_shoot_pos;

int g_shoot_pos_static;

void display_ascii(void);

void print_enter(void);

void move_ascii(void)

{

int i, j;

for (i = 0; i LENTH; i++) {

for (j = 0; j WIDTH; j++) {

if (fun_ascii[i][j] != ' ') {

fun_ascii[i][j - 1] = fun_ascii[i][j];

fun_ascii[i][j] = ' ';

}

}

}

}

void shoot_init(void)

{

int i, j;

for (j = 0; j WIDTH; j++) {

if (fun_ascii[2][j] != ' ')

break;

}

--j;

g_shoot_pos_static = g_shoot_pos = j;

}

void shoot_begin(void)

{

fun_ascii[2][g_shoot_pos] = 'O';

system("clear");

print_enter();

display_ascii();

fun_ascii[2][g_shoot_pos] = ' ';

}

void shoot_ascii(void)

{

int i;

i = WIDTH / 2 - 1;

while (i 0 g_shoot_pos 0) {

shoot_begin();

g_shoot_pos--;

usleep(SLEEP_TIME);

i--;

}

}

void do_shoot_ascii(void)

{

int i = 3;

shoot_init();

while (i 0) {

shoot_ascii();

g_shoot_pos = g_shoot_pos_static;

i--;

}

}

void display_ascii(void)

{

int i, j;

for (i = 0; i LENTH; i++) {

for (j = 0; j WIDTH; j++)

printf("%c", fun_ascii[i][j]);

printf("\n");

}

}

void print_enter(void)

{

int i;

for (i = 0; i ENTER_NUM; i++)

printf("\n");

}

int main(void)

{

int i = WIDTH;

while (i 0) {

if (i == (WIDTH / 2)) {

do_shoot_ascii();

i--;

continue;

}

system("clear");

print_enter();

move_ascii();

display_ascii();

i--;

usleep(SLEEP_TIME);

}

return 0;

}

(责任编辑:IT教学网)

更多

推荐ASP.NET教程文章