本文实例为大家分享了C语言实现飞机大战的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #in
本文实例为大家分享了C语言实现飞机大战的具体代码,供大家参考,具体内容如下
#include<stdio.h>
#include<stdlib.h>
#include<coNIO.h>
#include<windows.h>
int score = 0;
int plane_col, plane_row;//·É»úλÖÃ
int bullet_col,bullet_row;//×Óµ¯µÄλÖÃ
int area_height, area_width;//ÓÎÏ·ÇøÓò 0-n-1
int enemy_col, enemy_row;
int enemy_vh, enemy_vv;
int a[100][100] = { 0 };
void Gotoxy(int x, int y) {//Ë¢ÐÂ
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void HideCursor() {
CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void startup()//³õʼ»¯
{
area_height = 20;
area_width = 30;
plane_col = 14;
plane_row = 10;
bullet_col = 0;
bullet_row = -1;
enemy_col = rand() % area_width;
enemy_row = 0;
enemy_vh = 0;
enemy_vv = 1;
}
//int[][] planeArray() {
//
// a[plane_col][plane_row] = 1;
// for (int i = plane_col - 2; i < plane_col + 2; i++)
// a[i][plane_row + 1] = 1;
// a[plane_col - 1][plane_row + 2] = 1; a[plane_col + 1][plane_row + 2] = 1;
//
// return a;
//}
void show()//Öð¸ö×Ö·ûɨÃè²¢´òÓ¡
{
gotoxy(0, 0);
int i, j;
//ÏÔʾ
//system("cls");
for (i = 0; i < area_height; i++)//ÐбéÀú
{
for (j = 0; j < area_width; j++)//ÁбéÀú
{
if (i == plane_row && j == plane_col)
{
printf("*");
}
else if (i == bullet_row && j == bullet_col)
printf("|");
else if (i == enemy_row && j == enemy_col)
printf("@");
else printf(" ");
}
printf("\n");
}
printf("score:%d\n",score);
}
void updateWithInput()//½»»¥£¬¿ØÖÆ·É»úÒƶ¯£¬Éä»÷
{
char input;
//µÈ´ýÓû§µÄÊäÈ룬½»»¥
if (kbhit()) {
input = getch();
switch (input)
{
case 'w':
if(plane_row != 0)
plane_row--; break;
case 'a':
if(plane_col != 0)
plane_col--; break;
case 'd':
if(plane_col != area_width)
plane_col++; break;
case 's':
if(plane_row != area_height)
plane_row++; break;
case ' ':
if (bullet_row < 0)//ÆÁÄ»ÀïûÓÐ×Óµ¯
{
bullet_row = plane_row - 1;
bullet_col = plane_col;
}
break;
default:
break;
}
}
}
int IsCrash() {
//ÅжÏÎÒ·Å·É»úÊÇ·ñ×¹»Ù
if (enemy_col == plane_col && enemy_row == plane_row) {
return 1;
}
return 0;
}
void updateWithourInput()//×Óµ¯Òƶ¯ÓëµÐÈËÒƶ¯
{
//¸üÐÂ
bullet_row--;
static int count = 0;
count ++;
if (count == 40) {
enemy_row += enemy_vv;
enemy_col += enemy_vh;
count = 0;
}
}
void crack() {//»÷»ÙµÐÈË
if(enemy_row > area_height){
bullet_row = -1;
enemy_row = -1;
enemy_col = rand() % area_height;
}
else if (bullet_col == enemy_col && bullet_row == enemy_row) {
score += 10;
bullet_row = -1;
enemy_row = -1;
enemy_col = rand() % area_height;
}
}
int IsFinish() {//ÓÎÏ·ÊÇ·ñ½áÊø
if (score == 100) {
system("cls");
printf("congretulations!!!");
score = 0;
_sleep(500);//ÏÈÔÝÍ£ÔÚÏÖʵ·ûºÏÈËÐÔ»¯
system("pause");
return 1;
}
else if (IsCrash() == 1) {
system("cls");
printf("you have lost!!!");
score = 0;
_sleep(500);
system("pause");
return 1;
}
return 0;
}
int main()
{
HideCursor();
startup();
while (1)
{
show();
updateWithInput();
updateWithourInput();
crack();
if(IsFinish()==1){
startup();
continue;
}
}
return 0;
}
--结束END--
本文标题: C语言实现飞机大战
本文链接: https://lsjlt.com/news/150837.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0