C语言实现飞机大战

 更新时间:2022年06月08日 09:34:22   作者:Object_in_java  
这篇文章主要为大家详细介绍了C语言实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++实现LeetCode(89.格雷码)

    C++实现LeetCode(89.格雷码)

    这篇文章主要介绍了C++实现LeetCode(89.格雷码),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++中的伪随机数

    C++中的伪随机数

    这篇文章主要介绍了C++中的伪随机数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Qt信号与槽知识点总结归纳

    Qt信号与槽知识点总结归纳

    信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,下面这篇文章主要给大家介绍了关于Qt信号与槽知识点总结归纳的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Qt 10进制和16进制转换的使用示例

    Qt 10进制和16进制转换的使用示例

    在编程过程中,处理16进制字符串与10进制数字之间的转换是很常见的需求,本文主要介绍了Qt 10进制和16进制转换的使用示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 详解C++ cin.getline函数

    详解C++ cin.getline函数

    这篇文章主要介绍了C++ cin.getline函数的相关资料,帮助大家更好的理解和学习C++,感兴趣的朋友可以了解下
    2020-09-09
  • C语言线程对象和线程存储的实现

    C语言线程对象和线程存储的实现

    这篇文章主要介绍了C语言线程对象和线程存储的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C语言二分法求解方程根的两种方法

    C语言二分法求解方程根的两种方法

    这篇文章主要为大家详细介绍了C语言二分法求解方程根的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • 怎么在C++二进制文件中注入git信息详解

    怎么在C++二进制文件中注入git信息详解

    这篇文章主要给大家介绍了关于怎么在C++二进制文件中注入git信息的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-06-06
  • C++ 数据结构实现两个栈实现一个队列

    C++ 数据结构实现两个栈实现一个队列

    这篇文章主要介绍了详解C++ 数据结构实现两个栈实现一个队列的相关资料,需要的朋友可以参考下
    2017-03-03
  • C语言版三子棋游戏

    C语言版三子棋游戏

    这篇文章主要为大家详细介绍了C语言版三子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论