Bootstrap

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游戏

结尾

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

;