C语言占领游戏

目录

开头

大家好,我叫这是我58

程序

c 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <Windows.h>
void printmap(const char strmap[10][10]) {
	int ia = 0;
	int ib = 0;
	for (ia = 0; ia < 10; ia++) {
		for (ib = 0; ib < 10; ib++) {
			printf("\033[3%sm%c\033[0m", '*' == strmap[ia][ib] ? "2;1" : '-' == strmap[ia][ib] ? "1;1" : "6", strmap[ia][ib]);
		}
		printf("\n");
	}
}
void change(char* cp, char* cpa) {
	char chan[10] = { 0 };
	const int arr[9] = { -11, -10, -9, -1, 0, 1, 9, 10, 11 };
	const char chana[3] = "-|";
	int i = 0;
	int ia = 0;
	int ib = 0;
	int ic = 0;
	char* ccp = chan;
	for (; i < 9; i++) {
		('*' != *(cp + arr[i]) && (*ccp++ = *(cp + arr[i]), ('-' == *(cp + arr[i]) && ia++, '|' == *(cp + arr[i]) && ib++))), ('*' == *(cp + arr[i]) && ic++);
	}
	if (ia == ib) {
		 *ccp = chana[rand() % 2];
	}
	else if (ia < ib) {
		 *ccp = '|';
	}
	else {
		 *ccp = '-';
	}
	*cpa = chan[(i = rand() % (10 - ic))];
}
int main() {
	float fspd = 1.0f;
	char stw[9] = "color 0";
	srand((unsigned int)time(NULL));
	char strmap[10][10] = {
		'*','*','*','*','*','*','*','*','*','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','*','*','*','*','*','*','*','*','*'
	};
	char strmapa[10][10] = {
		'*','*','*','*','*','*','*','*','*','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','-','-','-','-','|','|','|','|','*',
		'*','*','*','*','*','*','*','*','*','*'
	};
	int i = 1;
	int ia = 1;
	int iw = 0;
	printf("这次游戏的倍速为多少?(0倍速自动转为1倍速) -> ");
	scanf("%f", &fspd);
	0 == fspd && (fspd = 1.0f);
	system("cls");
	while (!iw) {
		for (i = 1; i < 9; i++) {
			for (ia = 1; ia < 9; ia++) {
				change(&strmap[i][ia], &strmapa[i][ia]);
			}
		}
		for (i = 1; i < 9; i++) {
			for (ia = 1; ia < 9; ia++) {
				strmap[i][ia] = strmapa[i][ia];
			}
		}
		printmap(strmap);
		'-' == strmap[1][1] && (iw = 1), '|' == strmap[1][1] && (iw = -1);
		for (i = 1; i < 9; i++) {
			for (ia = 1; ia < 9; ia++) {
				if (iw > 0) {
					if ('|' == strmap[i][ia]) {
						iw = 0;
						goto g;
					}
				}
				else {
					if ('-' == strmap[i][ia]) {
						iw = 0;
						goto g;
					}
				}
			}
		}//判断
	g:
		Sleep(1000 / fspd);
		system("cls");
	}
	strcat(stw, iw > 0 ? "C" : "9");
	system(stw);
	printf(""%c"赢了", iw > 0 ? '-' : '|');
	return 0;
}//占领游戏(我随便取的):改变 打印 判断-->改变(概率:(←↑→↓↖↗↘↙)?本+多数)

程序的流程图

开始 把宏_CRT_SECURE_NO_WARNINGS定义为1 导入stdio.h 导入stdlib.h 导入string.h 导入time.h 导入Windows.h 定义printmaze函数 定义change函数 定义单精度浮点型fspd为1.0 把有9个字符的字符串stw初始化为"color 0" 把随机数的种子设为现在的时间戳 定义有10行10列的二维字符数组strmap为下面的图片


判断 是 清屏 是 是 是 否 否 是 是 否 否 是 是 是 是 是 是 等待1除以fspd秒,等待好后就清屏 否 否 是 否 否 否 否(等待1除以fspd秒,等待好后就清屏) 否 否 '-' == strmap[1][1]? 把iw设为1 '|' == strmap[1][1]? 把iw设为负1 设i为1 i < 9? 设ia为1 ia < 9? iw > 0? '|' == strmap[i][ia]? 设iw为0 转到g标签 '-' == strmap[i][ia]? ia自增1 i自增1 把有10行11=0列的二维字符数组strmapa初始化为上面的图片 定义整型i为1 定义整型ia为1 定义整型iw为0 输出"这次游戏的倍速为多少?(0倍速自动转为1倍速)" 把fspd设为你输入的单精度浮点数 0 == fspd? 把fspd设为1.0 !iw? 设i为1 i < 9? 设ia为1 ia < 9? 执行change函数,参数有二维字符数组strmap第i行第ia列的地址和二维字符数组strmapa第i行第ia列的地址 ia自增1 i自增1 设i为1 i < 9? 设ia为1 ia < 9? 把二维字符数组strmap第i行第ia列的元素设为二维字符数组strmapa第i行第ia列的元素 ia自增1 i自增1 执行printmap函数,参数有二维字符数组strmap g 如果iw大于0,就把stw连接上一个字符"C",否则就把stw连接上一个字符"9" 执行cmd命令,命令为字符串stw 输出""%c"赢了"(如果iw大于0,那么"%c"就代字符"-",否则就代"|") 结束 设iw为0 转到g标签 占领游戏(我随便取的):改变 打印 判断-->改变(概率:(←↑→↓↖↗↘↙)?本+多数)
printmap函数 是 是 否 否 结束 开始 定义整型ia为0 定义整型ib为0 设ia为0 ia < 10? 设ib为0 ib < 10? 输出"\033[3%sm%c\033[0m"(如果字符"*"为二维字符数组strmap第ia行第ib列的元素,那么"%s"就代"2;1",否则如果字符"-"为二维字符数组strmap第ia行第ib列的元素,那么"%s"就代"1;1",否则就代"6","%c"则代二维字符数组strmap第ia行第ib列的元素) ib自增1 输出"\n" ia自增1
change函数 是 是 是 是 是 否 是 否 是 否 否 否 否 否 结束 开始 把有10个字符的字符串chan全都初始化为0 把有9个整型的常量整型数组arr分别初始化为-11,-10,-9,-1,0,1,9,10和11 把有3个字符的常量字符串chana初始化为"-|" 定义整型i为0 定义整型ia为0 定义整型ib为0 定义整型ic为0 定义字符指针ccp为chan i < 9? '*' != *(cp + arr[i])? 把解引用的ccp设为解引用的某一个结果,其中这个结果就是cp加上arr的第i项的结果,并把ccp向右移动一位 '-' == *(cp + arr[i])? ia自增1 '|' == *(cp + arr[i])? ib自增1 '*' == *(cp + arr[i])? ic自增1 i自增1 ia == ib? 把解引用的ccp设为常量字符串chana第随机值模2的值项的结果 把解引用的cpa设为字符串chan的第随机值模上10减ic的差的值项,并把这个值赋给i ia < ib? 把解引用的ccp设为字符"|" 把解引用的ccp设为字符"-"

程序的效果

「占领游戏」

结尾

你觉得我这次做的游戏好吗?如果你觉得我这次做的游戏不好的话,就可以评论一下我这次做的游戏不好的原因吧。

相关推荐
ahadee16 分钟前
蓝桥杯每日真题 - 第19天
c语言·vscode·算法·蓝桥杯
Theliars24 分钟前
C语言之字符串
c语言·开发语言
Reese_Cool27 分钟前
【数据结构与算法】排序
java·c语言·开发语言·数据结构·c++·算法·排序算法
搬砖的小码农_Sky1 小时前
C语言:结构体
c语言·数据结构
平头哥在等你3 小时前
求一个3*3矩阵对角线元素之和
c语言·算法·矩阵
尹蓝锐4 小时前
C语言-11-18笔记
c语言
ahadee4 小时前
蓝桥杯每日真题 - 第18天
c语言·vscode·算法·蓝桥杯
就爱六点起4 小时前
C/C++ 中的类型转换方式
c语言·开发语言·c++
猫猫的小茶馆4 小时前
【C语言】指针常量和常量指针
linux·c语言·开发语言·嵌入式软件
冉佳驹4 小时前
数据结构 ——— 希尔排序算法的实现
c语言·数据结构·算法·排序算法·希尔排序