一个账号 发表于 2019-9-21 14:36:02

垃圾版飞机大战

本帖最后由 一个账号 于 2020-3-28 15:48 编辑

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<windows.h>
#include<stdlib.h>
#define MAX 100
long long int speed = 0;//控制敌机的速度
int position_x, position_y;//飞机的所在位置
int high, width;//地图的大小
int bullet_x, bullet_y;//子弹的位置
int enemy_x, enemy_y;//敌人的位置
int map;
/*0表示空白,1表示战机*的区域,2表示敌人战机的位置。
3表示上下围墙,4表示左右围墙,5表示子弹的位置*/
int score;
void starup()//初始化所有的信息
{
    high = 20;
    width = 30;
    position_x = high / 2;
    position_y = width / 2;
    bullet_x = 0;
    bullet_y = position_y;
    enemy_x = 2;
    enemy_y = position_y - 1;
    score = 0;

}
void startMap()
{
    int i, j;
    for (i = 1; i <= high - 1; i++)
    {
      map = 4;
      for (j = 2; j <= width - 1; j++)
            map = 0;
      map = 4;
    }
    //下方围墙的初始化
    i = high;
    for (j = 1; j <= width; j++)
      map = 3;

    map = 5;
    /*这里是战机大小的初始化开始*/
    map = 1;
    i = position_x;
    for (j = position_y - 2; j <= position_y + 2; j++)
      map = 1;
    map = 1;
    map = 1;
    /***      初始化结束         **/

    /* 敌人战机的初始化 */
    map = 2;
    map = 2;
    map = 2;
    /* 敌人战机初始化结束*/
}
void HideCursor()//隐藏光标
{
    CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
    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 updateWithoutInput()//于输入无关的跟新
{
        int i, j;
       
    if (bullet_x > 0)
      bullet_x--;
    if ((bullet_x == enemy_x) && (bullet_y == enemy_y))//当敌人的飞机被击中时
    {
      score++;
      enemy_x = 0;
      enemy_y = rand() % width;
      bullet_x = 0;
    }
    if (enemy_x > high)//当飞机超出区域
    {
      enemy_x = 0;
      enemy_y = rand() % width;
    }
    if (speed == 1)
      for (i = 1; i <= 10000; i++)//用来控制敌机的速度
      {
            for (j = 1; j <= 1000; j++)
            {
                speed = 1;
            }
      }
    speed = 0;
    if (speed == 0)
    {
      enemy_x++;
      speed = 1;
    }
}
void updateWithInput()//与输入有关的更新
{
    char input;
    if (kbhit())//在VC6.0++下,为_kbhit()
    {
      input = getch();//在VC6.0++下为_getch();
      if (input == 'a')
            position_y--;
      if (input == 's')
            position_x++;
      if (input == 'd')
            position_y++;
      if (input == 'w')
            position_x--;
      if (input == ' ')
      {
            bullet_x = position_x - 1;
            bullet_y = position_y;
      }
    }
}
void show()//展示的内容
{
    gotoxy(0, 0);
    int i, j;
    for (i = 1; i <= high; i++)
    {
      for (j = 1; j <= width; j++)
      {
            if (map == 0)
                printf(" ");
            if (map == 1)
                printf("*");
            if (map == 2)
                printf("#");
            if (map == 3)
                printf("~");
            if (map == 4)
                printf("|");
            if (map == 5)
                printf("|");
      }
      printf("\n");
    }
    printf("\n你的得分:%d\n\n", score);
    printf("操作说明: WSAD移动飞机,空格是发出子弹\n");
}
int main()
{
    starup();
    while (1)
    {
      HideCursor();
      startMap();
      show();
      updateWithoutInput();
      updateWithInput();
    }
    return 0;
}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 垃圾版飞机大战