C语言

今天头有点疼,无聊来玩玩C语言,控制台实现一个小球的弹跳。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#define true 1

int high, width;
int ballx, bally;
int variable_x, variable_y;
int position_x, position_y;
int ridus, left, right, count;

void gotoxy(int x, int y)
{
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle, pos);
}

void startup()
{
    high = 15;
    width = 20;
    ballx = 0;
    bally = width / 2;
    variable_x = 1;
    variable_y = 1;
    ridus = 5;
    position_x = high;
    position_y = width / 2;
    left = position_y - ridus;
    right = position_y + ridus;
    count = 0;
}

void show()
{
    gotoxy(0,0);
    int i, j;
    for (i = 0; i <= high + 1; i++)
    {
        for (j = 0; j <= width; j++)
        {
            if ((i == ballx) && (j == bally))
            {
                printf("o");
            }
            else if (j == width)
            {
                printf("|");
            }
            else if (i == high + 1)
            {
                printf("-");
            }
            else if ((i == high) && (j >= left) && (j <= right))
            {
                printf("*");
            }
            else
            {
                printf(" ");
            }
        }
        printf("\n");
    }
    printf("反弹小球的次数: %d\n", count);
}

void updateWithoutInput()
{
    if (ballx == high - 1)
    {
        if ((bally >= left) && (bally <= right))
        {
            count++;
            printf("\a");
        }
        else
        {
            printf("Game Over");
            system("pause");
            exit(0);
        }
    }

    ballx += variable_x;
    bally += variable_y;

    if((ballx == 0) || (ballx == high - 1))
    {
        variable_x = -variable_x;
    }
    if ((bally == 0) || (bally == width - 1))
    {
        variable_y = -variable_y;
    }
    Sleep(500);
}

void updateWithInput()
{
    char input;
    if (_kbhit())
    {
        input = _getch();
        if (input == 'a')
        {
            position_y--;
            left = position_y - ridus;
            right = position_y + ridus;
        }
        if (input == 'd')
        {
            position_y++;
            left = position_y - ridus;
            right = position_y + ridus;
        }
    }
}

int main()
{
    startup();
    while (true)
    {
        show();
        updateWithoutInput();
        updateWithInput();
    }
    return 0;
}

小球球就写好了 ,挺有意思的

上一篇
下一篇

鄂公网安备 42082102000192号