自学内容网 自学内容网

C语言2D游戏

开头

大家好,我叫这是我58。在今天,我用C语言编译出了我的第一个2D游戏。如果你想就看这个2D游戏或者与之相关的内容话,就看下下面的内容吧。

程序

#define _CRT_SECURE_NO_WARNINGS 1
#define HIGH 10
#define WIDTH 10
#define PLAYER 4][1
#define GOAL 4][9
#include <stdio.h>
#include <Windows.h>
void print_table(int arr[HIGH][WIDTH]) {
system("cls");
int i = 0;
int ia = 0;
for (i = 0; i < HIGH; i++) {
for (ia = 0; ia < WIDTH; ia++) {
printf("%d%c", arr[i][ia], WIDTH - 1 == ia ? '\n' : ' ');
}
}
}
int main() {
printf("欢迎你来玩这个游戏,在这个游戏里“0”是空地,“1”是你,而“8”是终点,在这之中,你只需要到达终点,就可以赢了\n");
Sleep(2800);
int arr[HIGH][WIDTH] = { 0 };
if (&arr[PLAYER] == &arr[GOAL]) {
goto a;
}
arr[PLAYER] = 1;
arr[GOAL] = 8;
char ch = 0;
int* p = &arr[PLAYER];
int i = 0;
do {
print_table(arr);
ch = getchar();
while ('\n' != getchar()) {
;
}
*p = 0;
switch (ch) {
case 'w':
for (i = 0; i < WIDTH; i++) {
if (p == &arr[0][i]) {
break;
}
}
if (WIDTH == i) {
p -= WIDTH;
}
break;
case 'a':
for (i = 0; i < HIGH; i++) {
if (p == &arr[i][0]) {
break;
}
}
if (HIGH == i) {
p--;
}
break;
case 's':
for (i = 0; i < WIDTH; i++) {
if (p == &arr[HIGH - 1][i]) {
break;
}
}
if (WIDTH == i) {
p += WIDTH;
}
break;
case 'd':
for (i = 0; i < HIGH; i++) {
if (p == &arr[i][WIDTH - 1]) {
break;
}
}
if (HIGH == i) {
p++;
}
break;
default:
break;
}
*p = 1;
} while (8==arr[GOAL]);
a:
system("cls");
printf("恭喜你,你赢了");
return 0;
}

程序的流程图

等待2.8秒
清屏
是(break)
break
是(break)
break
是(break)
break
是(break)
break
否(break)
否(break)
否(break)
否(break)
否(break)
否(清屏)
开始
把宏_CRT_SECURE_NO_WARNINGS为1
定义宏HIGH为你想要的数
定义宏WIDTH为你想要的数(注意:如果宏WIDTH的值过大,就可能会出现一些问题)
定义宏PLAYER为“(你想要的数)][(你想要的数)”(宏PLAYER指玩家在游戏刚开始时就定好的地址)
定义宏GOAL为“(你想要的数)][(你想要的数)”(宏GOAL指终点在游戏刚开始时就定好的地址)
导入stdio.h
导入Windows.h
定义print_table函数
输出“欢迎你来玩这个游戏,在这个游戏里“0”是空地,“1”是你,而“8”是终点,在这之中,你只需要到达终点,就可以赢了\n”
把一个有HIGH行WIDTH列的整型二维数组全部初始化为0
&arr[PLAYER] == &arr[GOAL]?
a:
输出“恭喜你,你赢了”
结束
把arr里的玩家的位置里的数字设为1
把arr数组里的终点的位置里的数字设为8
定义字符ch为0
定义整型指针p为在arr数组里的玩家在游戏刚开始时就定好的地址
定义整型i为0
使用print_table函数(参数有arr数组)
ch为你刚才输入的第一个字符
'\n' != getchar()?
设解引用的p为0
'w' == ch?
设i为0
i < WIDTH?
p == &arr[0][i]?
WIDTH == i?
p向左移动WIDTH位
把解引用的p设为1
8==arr[GOAL]?
'a' == ch?
设i为0
i < HIGH?
p == &arr[i][0]?
HIGH == i?
p向左移动一位
's' == ch?
设i为0
i < WIDTH?
p == &arr[HIGH - 1][i]?
WIDTH == i?
p向右移动WIDTH位
'd' == ch?
设i为0
i < HIGH?
p == &arr[i][WIDTH - 1]?
HIGH == i?
p向右移动1位
i自增1
i自增1
i自增1
i自增1
print_table函数
清屏
结束
开始
定义整型i为0
定义整型ia为0
设i为0
i < HIGH?
设ia为0
ia < WIDTH?
输出“%d%c”(“%d”代形参arr的第i行第ia列,并且如果WIDTH-1等于ia,“%c”就代“\​n”,否则代空格)
ia自增1
i自增1

这个游戏的效果

2D游戏

结尾

在看到这里之后,如果你喜欢这篇博客,就可以评论来互动一下我哦。


原文地址:https://blog.csdn.net/qq_69383179/article/details/140321131

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!