網站首頁 編程語言 正文
前言
本文詳細介紹了猜數字游戲的具體實現邏輯
一、猜數字游戲是什么
1、電腦自動生成一個1-100以內的數字
2、我們輸入一個我們猜的數字
3、如果我們猜的數字比電腦隨機生成的數字大,那么輸出(猜大了)
4、如果我們猜的數字比電腦隨機生成的數字小,那么輸出(猜小了)
5、如此循環往復,猜到正確的數字之后游戲結束
二、使用步驟
- 1.首先應該打印菜單
代碼如下
void menu()
{
printf("*********************\n");
printf("***** 1. play *******\n");
printf("***** 0. exit *******\n");
printf("*********************\n");
}
int main()
{
menu();
printf("請選擇:>");
int input = 0;
while (input)
{
switch (input)
{
case 1:
printf("游戲開始");
game()//選擇開始游戲之后,進入我們玩游戲的一個邏輯
break;
case 0:
printf("退出游戲");
break;
default:
printf("輸入錯誤,請重新輸入!");
break;
}
}
return 0;
}
選擇1,開始游戲
選擇0,游戲結束
- 2.打印我們的game()函數來實現我們的游戲具體邏輯
代碼如下:
void game()
{
int guess = 0;
int ret = rand() % 100 + 1;//限制我們得到的數字為1-100之間的數字
while (1)//因為猜數字是一個多次的過程,因此需要一個循壞來解決
{
printf("請輸入你猜的數字:>");
scanf("%d", &guess);
//將我們猜的數字與電腦隨機生的數字作對比
if (guess < ret)
{
//如果我們猜的數字比電腦的數字要小,輸出猜小了
printf("猜小了!\n");
}
else if (guess > ret)
{
//如果我們猜的數字比電腦的數字要大,輸出猜大了
printf("猜大了!\n");
}
else
{
//數字猜對了,輸出猜對了
printf("猜對了!\n");
break;
}
}
}
注:
如果使用rand()函數,必須先調用srand()函數,再使用時間戳來形成一個隨機數字。
我們調用時間戳,因此需要包含頭文件#include<time.h>
【時間戳】的概念:一個能表示一份數據在某個特定時間之前已經存在的、 完整的、 可驗證的數據,通常是一個字符序列,唯一地標識某一刻的時間。
因此我們的main()函數部分就變成了如下代碼所示:
int main()
{
menu();
printf("請選擇:>");
int input = 0;
int n = 0;
scanf("%d", &input);
srand((unsigned int)time(NULL));
//使用srand函數,接著使用時間戳,形成一個無符號整數
//我們調用時間戳,因此需要包含頭文件#include<time.h>
while (input)
{
switch (input)
{
case 1:
game();//猜數字游戲的的邏輯
break;
case 0:
printf("退出游戲");
break;
default:
printf("輸入錯誤,請重新輸入!");
break;
}
}
return 0;
}
總結
本文的重點是對于時間戳的理解,以及猜數字游戲的邏輯
下面是【猜數字游戲】的全部代碼
猜數字游戲1-100
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void game()
{
int guess = 0;
int ret = rand() % 100 + 1;//限制我們得到的數字為1-100之間的數字
//printf("%d",ret);
while (1)
{
printf("請輸入你猜的數字:>");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了!\n");
}
else if (guess > ret)
{
printf("猜大了!\n");
}
else
{
printf("猜對了!\n");
break;
}
}
}
void menu()
{
printf("*********************\n");
printf("***** 1. play *******\n");
printf("***** 0. exit *******\n");
printf("*********************\n");
}
int main()
{
menu();
printf("請選擇:>");
int input = 0;
int n = 0;
scanf("%d", &input);
srand((unsigned int)time(NULL));
while (input)
{
switch (input)
{
case 1:
game();//猜數字的邏輯
break;
case 0:
printf("退出游戲");
break;
default:
printf("輸入錯誤,請重新輸入!");
break;
}
}
return 0;
}
原文鏈接:https://blog.csdn.net/weixin_64634186/article/details/124233020
相關推薦
- 2022-06-11 FreeRTOS進階之系統延時完全解析_操作系統
- 2022-06-20 Python使用ffmpeg合成視頻、音頻的實現方法_python
- 2021-12-13 C++ 之常量const(常對象、常數據成員、常成員函數)
- 2022-10-21 Go語言使用goroutine及通道實現并發詳解_Golang
- 2023-02-15 Objective-C關鍵字@property使用原理探究_IOS
- 2022-04-27 一篇文章了解正則表達式的替換技巧_正則表達式
- 2022-04-04 scrapy框架中用ssh連接遠程服務器的實現_python
- 2023-01-20 C++利用模板實現消息訂閱和分發功能_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支