• 周五. 7月 1st, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

双手奉上!一个好玩的小游戏(纯C语言编写)!

admin

11月 28, 2021

效果演示

 

 

源代码

#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))//当敌人的飞机被击中时

    {

        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 <= 10000; i++)//用来控制敌机的速度

        {

            for (int j = 1; j <= 3000; 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[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("
");

    }

    printf("
你的得分:%d

", score);

    printf("操作说明: ASDW分别操作 左下右上四个的移动
");

    printf("**空格是发出子弹**
");

}

int main()

{

    starup();

    while (1)

    {

        HideCursor();

        startMap();

        show();

        updateWithoutInput();

        updateWithInput();

    }

    return 0;

}

—————————————

关注我,参观更多源码项目!

– End –

—————————————

不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~

【值得关注】我的 编 程 学 习 交 流 俱 乐 部 !【点击进入】

C语言入门资料(网盘链接免费分享):

 

C语言推荐书籍(PDF免费分享):

 

发表评论

您的电子邮箱地址不会被公开。