C语言解密元素游戏代码解析:随机数、字符串比较、循环应用
C语言解密元素游戏代码解析:随机数、字符串比较、循环应用
以下是一个用 C 语言制作的解密元素游戏,主要使用了随机数、字符串比较和循环语句等基本语法。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main()
{
char elements[10][10] = {'hydrogen', 'helium', 'lithium', 'beryllium', 'boron', 'carbon', 'nitrogen', 'oxygen', 'fluorine', 'neon'};
int index = rand() % 10; // 随机生成0-9之间的整数作为元素序号
char answer[10];
strcpy(answer, elements[index]); // 将随机选出的元素复制到answer中
int length = strlen(answer);
char guess[10];
int i, j;
for (i = 0; i < length; i++) {
guess[i] = '-';
}
guess[length] = '\0';
int turns = 0;
int max_turns = 5;
while (turns < max_turns) {
printf("Guess a letter: ");
char letter;
scanf(" %c", &letter);
int found = 0;
for (j = 0; j < length; j++) {
if (answer[j] == letter) {
guess[j] = letter;
found = 1;
}
}
printf("%s\n", guess);
if (strcmp(answer, guess) == 0) {
printf("Congratulations! You win!\n");
return 0;
}
if (!found) {
turns++;
printf("Wrong guess, %d turns left.\n", max_turns - turns);
}
}
printf("Sorry, you lose. The answer is %s.\n", answer);
return 0;
}
该程序的主要思路是选择10个元素中的一个作为答案,玩家需要猜出该元素的所有字母,每猜错一个字母就会失去一次机会,最多允许猜错5次。如果猜出了所有字母,玩家就赢了,否则就输了。
程序首先定义了一个元素数组,其中存储了10个常见元素的名称。然后使用rand()函数生成一个0-9之间的随机数,作为元素序号。接着将选出的元素复制到answer数组中,并根据答案的长度生成一个相应长度的guess数组,用于存储玩家猜测的结果。guess数组中每个元素的初值都是'-', 表示该位置还未猜出来。
然后进入一个while循环,直到玩家猜出所有字母或者猜错了5次为止。循环中首先提示玩家输入一个字母,然后遍历答案的所有字母,如果找到了与玩家输入的字母相同的字母,就将guess数组中对应位置的元素改为该字母,并标记found为1。如果guess数组中所有元素都与answer数组对应位置的元素相同,说明玩家已经猜出了所有字母,输出“Congratulations! You win!”并结束程序。如果没有猜出所有字母,但是找到了与玩家输入的字母相同的字母,则输出guess数组的当前状态。如果没有找到相同的字母,则turns加1,表示玩家猜错了一次,同时输出“Wrong guess, %d turns left.”,其中%d表示还剩下几次机会。
当turns达到5时,说明玩家已经猜错了5次,输出“Sorry, you lose. The answer is %s.”,其中%s表示答案,然后结束程序。
总体来说,该程序比较简单,适合初学者练习基础语法。但是也有一些可以改进的地方,比如可以增加一个提示,告诉玩家猜测的字母是否已经猜过,可以增加一些难度等级,让玩家可以根据自己的水平选择不同的难度等级等。

原文地址: http://www.cveoy.top/t/topic/lX7O 著作权归作者所有。请勿转载和采集!