C語言代碼實現猜數字游戲
前言:
本文主要講解以c語言編寫猜數字游戲,目的是介紹C語言中的循環(huán)和分支的具體用法。
一:猜數字游戲基本介紹&對程序預期
.猜數字游戲,顧名思義,就是系統(tǒng)隨機給出一個數字,玩家對這個數字進行猜測,如果玩家猜測的數字大于給出的數字,則系統(tǒng)會提示猜大了,如果玩家猜測的數字小于給出的數字,則系統(tǒng)會提示猜小了,這樣逐步縮小猜測范圍,直到玩家猜對為止。
2.程序預期:猜數字結束后,玩家如果猜對了的話可以繼續(xù)游戲,也可以退出游戲
二:程序設計思路
1.總體思路:
首先,實現游戲功能必須要有一個菜單來提示玩家如何進行操作。其次,為了代碼具有可讀性,可以將游戲部分函數和菜單部分函數作為兩個子函數,然后在主函數調用他們。然后我們?yōu)榱藢崿F玩家可以多次游戲可以使用循環(huán)。
綜上所述,我們應該設計兩個子函數:菜單函數和游戲函數。一個主函數
2.菜單部分函數:
菜單部分函數
void menu()
{
printf("***********************************************\n");
printf("*************************1play*****************\n");
printf("*************************0exit*****************\n");
printf("***********************************************\n");
}菜單函數設計相對簡單,只是為了提示玩家如何操作
3.游戲部分函數
void game()
{
srand((unsigned int)time(NULL));
int ret = rand() % 100 + 1;
while (1)
{
printf("猜數字\n");
int guess = 0;
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("猜對了\n");
break;
}
}
}①在游戲函數部分,首先要生成隨機數,生成隨機數的方法如下:
C語言中提供了生成隨機數的函數rand函數

rand函數會返回一個0到RAND-MAX的隨機整數,使用這個函數需要包含頭文件<stdlib.h>
但是rand函數每次生成的隨機數相同,所以只用rand函數不夠,所以要使用srand()函數增加隨機性

后一句中說明在使用rand函數前要定義一個srand()函數

如畫線句所示,srand函數的作用就是一個隨機數的生成的種子。
而且需要一個無符號整型,在srand函數中括號輸入一個隨機數字即可生成隨機數,時間正是一個一直在變化的數字。
在這里提出一個時間戳的概念:時間戳是指格林威治時間1970年01月01日00時00分00秒 (北京時間1970年01月01日08時00分00秒)起至現在的總秒數。

因為srand需要的參數是無符號類型,所以對time進行強制類型轉換。time后不需要參數,所以給他一個空指針。
使用srand((unsigned int)time(NULL))
輸入time返回一個時間戳

需要一個頭文件<time.h>
因為給出的隨機數范圍太大,所以需要限定隨機數范圍
如下:int ret = rand()%100+1,將隨機數限定在0-100區(qū)間,便于猜測
②:猜數字環(huán)節(jié)
利用while循環(huán)來逐步縮小猜測范圍,當猜測的數字等于隨機數時提示”猜對了“。
4.主函數部分
int main()
{
int input = 0;
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
break;
default:
printf("輸入錯誤,請重新輸入");
}
} while (input);
return 0;
}主函數中使用了switch語句,和do-while語句
主要目的是為了玩家選擇是否進入游戲
5.代碼主體
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
void menu()
{
printf("***********************************************\n");
printf("*************************1play*****************\n");
printf("*************************0exit*****************\n");
printf("***********************************************\n");
}
void game()
{
srand((unsigned int)time(NULL));
int ret = rand() % 100 + 1;
while (1)
{
printf("猜數字\n");
int guess = 0;
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("猜對了\n");
break;
}
}
}
int main()
{
int input = 0;
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
break;
default:
printf("輸入錯誤,請重新輸入");
}
} while (input);
return 0;
}三:總結
此程序主要為了熟悉循環(huán)和分支的具體用法,并且學會利用時間戳和rand函數生成隨機數。
到此這篇關于C語言代碼實現猜數字游戲的文章就介紹到這了,更多相關C語言猜數字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談#ifndef,#define,#endif的作用和用法
下面小編就為大家?guī)硪黄獪\談#ifndef,#define,#endif的作用和用法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12

