Round1:我的黑白框雷霆战机

相信大家都玩过雷霆战机,话不多说,直接上代码。

代码很简单,试着运行了一下,玩着没有问题。

大家可以试玩,也可以试着优化,欢迎在评论区交流,谢谢!

#include <stdio.h>

#include <stdlib.h>
#include <conio.h>
#include <windows.h>
int position_x,position_y;//飞机位置
int bullet_x,bullet_y;    //子弹位置
int enemy_x,enemy_y;      //敌机位置
int high,width;           //游戏画面尺寸
int score;                //得分
void gotoxy (int x,int y)            //清屏函数,与system函数相比较
{
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 ()
{
high = 20;
width = 30;
position_x = high/2;
position_y = width/2;
bullet_x = -2;
bullet_y = position_y;
enemy_x = 0;
enemy_y = position_y;
score = 0;
}
void show ()
{
int i,j;
gotoxy (0,0);
for (i = 0;i < high;i++)
{
for (j = 0;j < width;j++)
{
if ((i == position_x) && (j == position_y))
printf ("*");
else if ((i == enemy_x) && (j == enemy_y))
printf ("@");
else if ((i == bullet_x) && (j == bullet_y))
printf ("|");
else
printf (" ");
}
printf ("\n");
}
printf ("得分:%d\n",score);
}
void updateWithoutInput ()
{
static int speed = 0;
if (bullet_x > -1)
bullet_x--;
if ((bullet_x == enemy_x) && (bullet_y == enemy_y))
{
score++;
enemy_x = -1;
enemy_y = rand ()% width;
bullet_x = -2;
}
if (enemy_x> high)
{
enemy_x = -1;
enemy_y = rand ()% width;
}
    
if (speed < 10)
speed ++;
if (speed == 10)
{
enemy_x ++;
speed = 0;
}
}
void updateWitnInput ()
{
char input;
if (kbhit ())
{
input = getch ();
if (input == 'a')
position_y--;
if (input == 'd')
position_y++;
if (input == 'w')
position_x--;
if (input == 's')
position_x++;
if (input == ' ')
{
bullet_x = position_x-1;
bullet_y = position_y;
}
}


}
int main ()
{
startup ();        //数据的初始化
HideCursor (); //隐藏光标
while (1)         //游戏循环执行
{
show (); //游戏显示画面
updateWithoutInput ();    //与用户输入无关的更新
updateWitnInput ();         //与用户输入有关的更新
}

return 0 ;

}


猜你喜欢

转载自blog.csdn.net/LuLigod/article/details/80376789