c语言雷霆战机小游戏

news/2024/11/29 7:43:27/

#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[MAX][MAX];
/*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[i][1] = 4;
        for (j = 2; j <= width - 1; j++)
            map[i][j] = 0;
        map[i][width] = 4;
    }
    //下方围墙的初始化 
    i = high;
    for (j = 1; j <= width; j++)
        map[i][j] = 3;

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

    /* 敌人战机的初始化 */
    map[enemy_x][enemy_y] = 2;
    map[enemy_x - 1][enemy_y - 1] = 2;
    map[enemy_x - 1][enemy_y + 1] = 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()//于输入无关的跟新 
{
    if (bullet_x > 0)
        bullet_x--;
    if ((bullet_x == enemy_x) && (bullet_y == enemy_y)||(bullet_x== enemy_x-1&&bullet_y == enemy_y-1)||(bullet_x== enemy_x-1&&bullet_y == enemy_y+1))//当敌人的飞机被击中时 
    {
        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 (int i = 1; i <= 100000; i++)//用来控制敌机的速度 
        {
            for (int j = 1; j <= 1000; j++)
            {
                speed = 1;
            }
        }
    speed = 0;
    if (speed == 0)
    {
        enemy_x++;
        if(map[enemy_x][enemy_y]==1) score--;
        speed = 1;
    }
}
void updateWithInput()//与输入有关的更新 
{
    char input;
    if (kbhit())//在VC6.0++下,为_kbhit()
    {
        input = getch();//在VC6.0++下为_getch();
        if (input == 'a'&&map[position_x][position_y - 3]!=4)
            position_y--;
        if (input == 's'&&map[position_x + 2][position_y - 1]!=3)
            position_x++;
        if (input == 'd'&&map[position_x][position_y+3]!=4)
            position_y++;
        if (input == 'w'&&position_x-2>=0)
            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[i][j] == 0)
                printf(" ");
            if (map[i][j] == 1)
                printf("*");
            if (map[i][j] == 2)
                printf("#");
            if (map[i][j] == 3)
                printf("~");
            if (map[i][j] == 4)
                printf("|");
            if (map[i][j] == 5)
                printf("|");
        }
        printf("\n");
    }
    printf("\n你的得分:%d\n\n", score);
    printf("操作说明: ASDW分别操作 左下右上四个的移动\n");
    printf("**空格是发出子弹**\n");
    printf("被敌机头部碰到会扣掉1~2分,具体取决与敌机头部与战机的接触点有多少个\n");
}
int main()
{
    starup();
    while (1)
    {
        HideCursor();
        startMap();
        show();
        updateWithoutInput();
        updateWithInput();
    }
    return 0;
}


http://www.ppmy.cn/news/857360.html

相关文章

java雷霆战机代码判断死亡_用Java开发简单又好玩的——雷霆战机小游戏几行代码就搞定...

用Java开发简单又好玩的——雷霆战机小游戏几行代码就搞定 用Java开发简单又好玩的——雷霆战机小游戏&#xff0c;几行代码就搞定 资源加载 音乐播放 创建子弹类 创建爆炸和珍宝类 创建导弹和飞机类 鼠标键盘控制 新建项目:Java Project -> planewar 将图片文件资源和音乐文…

python numpy数组动态写入csv文件_关于python:将NumPy数组转储到csv文件中

有没有办法将一个numpy数组转储到csv文件中?我有一个2d numpy数组,需要以人类可读的格式转储它。 numpy.savetxt将数组保存到文本文件中。 import numpy a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ]) numpy.savetxt("foo.csv", a, delimiter=",") …

FunCode太空战机C++实现

仅供交流学习使用&#xff0c;因博主水平有限&#xff0c;有错误欢迎批评指正 作者&#xff08;即博主本人&#xff09;&#xff1a; Akame Qixisi / Excel Bloonow IDE&#xff1a;Code::Blocks 17.12 编译器需要支持C14或以上标准&#xff08;Code::Blocks如何设置见附录Ⅰ&…

python写出雷霆战机_利用Python自制雷霆战机小游戏,娱乐编程,快乐学习!

开发工具 Python版本&#xff1a;3.6.4 相关模块&#xff1a; pygame模块&#xff1b; 以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变量&#xff0c;pip安装需要的相关模块即可。 先睹为快 在cmd窗口运行"Game10.py"文件即可。 效果如下&#xff1a…

太空战机c语言实验报告,c语言课程设计_太空战机提高篇.doc

c语言课程设计_太空战机提高篇 C语言课程设计--太空战机 一、游戏介绍 太空战机是玩家用键盘控制战机移动并发射子弹&#xff0c;消灭敌方的战机。敌方战机从右到左移动&#xff0c;同时上下浮动。同时隔一定的时间发射子弹&#xff0c;我方战机在受到敌方战机子弹攻击时&#…

java雷霆战机图片_JAVA开发《雷霆战机》雷电类游戏效果演示

原标题&#xff1a;JAVA开发《雷霆战机》雷电类游戏效果演示 JAVA开发《雷霆战机》 雷电类游戏 效果演示 | 附源码 hello&#xff0c;伙伴们&#xff01; 人见人爱&#xff0c;花见花开的小编又来给各位小伙伴&#xff01; 分享福利了&#xff01; 掌声鲜花何在 话说最近给大家…

雷霆战机的java代码_JavaSwing雷霆战机(飞机大战)源代码

【实例简介】 JavaSwing界面的飞机大战&#xff0c;实现了开始&#xff0c;暂停&#xff0c;结束游戏界面&#xff0c;还实现了界面自己循环滚动。英雄机的键盘控制等。 【实例截图】 【核心代码】 PlaneWars └── PlaneWars ├── bin │ ├── bgmusic.wav │ ├──…

java雷霆战机豪华版代码_Java 打飞机 雷霆战机 游戏 源代码

Java 打飞机 雷霆战机 游戏 源代码 小学期做了一个类似打飞机的游戏 IDE为 IntelliJ IDEA 小学期做了一个类似打飞机的游戏 IDE为 IntelliJ IDEA 通过操作键盘上下左右和空格键来控制飞机移动和发射子弹&#xff0c;没有写什么背景音乐&#xff0c;源码附上&#xff0c;希望能帮…