C语言之制作带有难度选择,计时,计次,排行榜的猜数字游戏


一、程序功能

带有计时,计次,排行榜的简单猜数字游戏

游戏规则
当规定时间达到后并未猜出数字,视作游戏失败
当规定次数达到后并未猜出数字,视作游戏失败
当在规定次数和规定时间内猜出数字,视作成功并记录成绩
可以读取本次程序运行的排行榜

拥有超多的难度选择:
简单:200秒 30次
中等:100秒 15次
困难:50秒 7次
排行榜:
使用自定数据类型和数组进行记录
使用冒泡算法进行成绩的排序
总时间短者排名优先
时间计算公式为用时+次数*5(思考是罚时系统)

二、代码实现

1.运行图片

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.代码内容

代码如下(示例):

#include <cstdio>
#include <iostream>	
#include <ctime>
#include<Windows.h>
using namespace std;
//声明函数
void lose(void);
void game(double, int);
void difficult();
void read(void);
void write(double, int);
//定义排名数据类型
struct pm
{
	char name[100] = { 'x','x' ,'x' };
	double btime = 10000;
};
//排行榜全局变量
pm bank[11];
//入口
int main()
{
	int modle;
	do
	{
		system("cls");
		printf("************菜单************\n\n");
		printf("         1.开始游戏\n\n");
		printf("         2.排行榜\n\n");
		printf("         3.退出游戏\n\n");
		printf("****************************\n\n");
		printf("菜单操作:");
		cin >> modle;
		switch (modle)
		{
		case(1):
			difficult();//难度菜单函数		
			break;
		case(2):
			read();//排行榜菜单
			break;
		case(3):
			printf("游戏将在三秒内退出");
			Sleep(3000);
			exit(0);
		default:
			break;
		}
	} while (true);
	return 0;
}
//游戏主函数
void game(double times, int number)
{
	//清屏
	system("cls");
	//创建随机数
	int systemNum;
	srand((unsigned)time(NULL));
	systemNum = rand() % 100 + 1;
	//定义游戏用时
	time_t  	clk2, clk1;
	printf("你有%.1lf秒的时间,有%d次的猜测机会\n", times, number);
	Sleep(1500);
	//游戏倒计时
	printf("游戏将在3s后开始\n");
	for (int i = 3; i > 0; i--)
	{
		Sleep(1000);
		printf("%d\n", i);
	}
	Sleep(1000);
	printf("游戏开始,祝你好运\n");
	Sleep(1000);
	system("cls");
	//开始计时
	time(&clk1);
	time(&clk2);
	//游戏内容
	int n = 1;
	int guessnume;
	int sum = 1;
	do//判断游戏是否进行
	{
		printf("请输入你猜的数(1-100):\n");
		cin >> guessnume;
		time(&clk2);
		if (guessnume > systemNum && difftime(clk2, clk1) / 1000 < times)
		{
			printf("大\n");
			sum++;
		}
		else if (guessnume < systemNum && difftime(clk2, clk1) / 1000 < times)
		{
			printf("小\n");
			sum++;
		}
		else if (guessnume == systemNum && difftime(clk2, clk1) / 1000 < times)
		{
			printf("正确\n");
			printf("总共用了%d次,用时%.1lf秒\n", sum, difftime(clk2, clk1) / 1000);
			Sleep(3000);
			write(difftime(clk2, clk1) / 1000, sum);
			break;
		}
		else
		{
			lose();
			break;
		}
	} while (sum < number + 1);
	if (difftime(clk2, clk1) / 1000 < times && sum == number + 1)
	{
		lose();
	}
}
//难度选择菜单
void difficult()
{
	system("cls");
	printf("***********游戏难度*********\n\n");
	printf("         1.简单模式\n");
	printf("         2.中等模式\n");
	printf("         3.困难模式\n");
	printf("         4.返回主菜单\n");
	printf("****************************\n\n");
	printf("难度选择:");
	int difficult;
	cin >> difficult;
	switch (difficult)
	{
	case(1):
		game(200.0, 30);
		break;
	case(2):
		game(100.0, 15);
		break;
	case(3):
		game(50.0, 7);
		break;
	case(4):
		break;
	default:
		printf("未知的选择\n");
		printf("游戏将在三秒后返回主菜单");
		Sleep(3000);
		break;
	}
}
//失败函数
void lose()
{
	printf("您已失败,三秒后将返回选择菜单");
	Sleep(3000);
}
//排行榜写入
void write(double time1, int times)
{
	printf("请输入您的名字;");
	scanf_s("%s", &bank[10].name, sizeof(bank[10].name));
	bank[10].btime = time1 + times * 5;
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10 - i; j++)
		{
			if (bank[j].btime > bank[j + 1].btime)
			{
				swap(bank[j].btime, bank[j + 1].btime);
				swap(bank[j].name, bank[j + 1].name);
			}
		}
	}
	printf("已录入您的成绩,三秒后将返回选择菜单");
	Sleep(3000);
}
//排行榜读取
void read()
{
	system("cls");
	printf("排名  名字    用时(包含罚时)\n");
	for (int i = 0; i < 10; i++)
	{
		printf("%-4d %-8s %.1lf秒\n", i + 1, bank[i].name, bank[i].btime);
	}
	int m;
	printf("请输入0返回主菜单:");
	do
	{
		cin >> m;
	} while (m != 0);
}


三、总结

这就是制作带有难度选择,计时,计次,排行榜的猜数字游戏的全部内容,为专业老师所留作业,但不单单满足于简单的猜数字功能,仅为初学者,仅供参考(以免误人子弟),如有错误请指出,谢谢啦。
其实还想写个双线程让游戏更加真实,但太懒啦。下次一定!!!

  • 12
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
以下是一个简单的贪吃蛇Python代码,包括一个成绩排行榜: ```python import pygame import random # 初始化游戏 pygame.init() # 游戏界面尺寸 SCREEN_WIDTH = 480 SCREEN_HEIGHT = 480 # 颜色定义 WHITE_COLOR = (255, 255, 255) BLACK_COLOR = (0, 0, 0) RED_COLOR = (255, 0, 0) GREEN_COLOR = (0, 255, 0) # 创建游戏界面 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption('Snake Game') # 定义字体 font = pygame.font.SysFont('arial', 24) # 定义贪吃蛇初始位置 snake_x = 100 snake_y = 100 snake_width = 10 snake_height = 10 snake_speed = 10 # 定义贪吃蛇移动方向 snake_direction = 'right' # 定义食物初始位置 food_x = random.randint(0, SCREEN_WIDTH - snake_width) food_y = random.randint(0, SCREEN_HEIGHT - snake_height) food_width = 10 food_height = 10 # 定义分数 score = 0 # 定义成绩排行榜 high_scores = [] # 游戏循环 running = True while running: # 处理游戏事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP and snake_direction != 'down': snake_direction = 'up' elif event.key == pygame.K_DOWN and snake_direction != 'up': snake_direction = 'down' elif event.key == pygame.K_LEFT and snake_direction != 'right': snake_direction = 'left' elif event.key == pygame.K_RIGHT and snake_direction != 'left': snake_direction = 'right' # 移动贪吃蛇 if snake_direction == 'up': snake_y -= snake_speed elif snake_direction == 'down': snake_y += snake_speed elif snake_direction == 'left': snake_x -= snake_speed elif snake_direction == 'right': snake_x += snake_speed # 判断贪吃蛇是否吃到食物 if snake_x < food_x + food_width and snake_x + snake_width > food_x and snake_y < food_y + food_height and snake_y + snake_height > food_y: food_x = random.randint(0, SCREEN_WIDTH - snake_width) food_y = random.randint(0, SCREEN_HEIGHT - snake_height) score += 10 # 绘制游戏界面 screen.fill(WHITE_COLOR) pygame.draw.rect(screen, GREEN_COLOR, [food_x, food_y, food_width, food_height]) pygame.draw.rect(screen, BLACK_COLOR, [snake_x, snake_y, snake_width, snake_height]) # 绘制分数 score_text = font.render('Score: ' + str(score), True, BLACK_COLOR) screen.blit(score_text, (10, 10)) # 更新游戏界面 pygame.display.update() # 判断贪吃蛇是否触碰到边界或自己 if snake_x < 0 or snake_x > SCREEN_WIDTH - snake_width or snake_y < 0 or snake_y > SCREEN_HEIGHT - snake_height: running = False elif [snake_x, snake_y] in [[x, y] for x, y in high_scores]: running = False # 将当前分数添加到排行榜中 if not running: high_scores.append([score, snake_x, snake_y]) high_scores.sort(reverse=True) # 绘制成绩排行榜 for i, score in enumerate(high_scores): score_text = font.render(str(i+1) + '. ' + str(score[0]), True, BLACK_COLOR) screen.blit(score_text, (SCREEN_WIDTH - 100, 10 + i * 30)) # 退出游戏 pygame.quit() ``` 在这个游戏中,成绩排行榜是一个二维列表,每个元素包含了玩家的分数以及玩家游戏结束时贪吃蛇头部的坐标。当游戏结束时,将当前分数添加到排行榜中并按分数从高到低排序,然后在游戏界面上绘制排行榜

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

holic512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值