目錄
前言
一、預期實作猜數字游戲的功能
二、具體思路講解
1.總體思路
2.選單功能的實作
3.主函式部分的實作
4.游戲game()函式的代碼實作
5.總程式代碼
三.常見錯誤
前言
對于c語言初學者來說用c語言實作猜數字游戲是基本的問題,本篇文章會細致的講解如何用代碼來實作猜數字游戲,希望讀者在閱讀本篇博客前學習玩分支與回圈和最基本的c語言語法知識,
提示:以下是本篇文章正文內容,下面案例可供參考
一、預期實作猜數字游戲的功能
1:什么是猜數字游戲
猜數字游戲顧名思義是電腦隨機生成一個數字,讓玩家來猜,如果沒猜對,電腦會提示玩家猜大了還是猜小了,玩家可以多次嘗試,直到玩家猜對了本次游戲就結束,
2:預期效果
在實作猜數字的基礎上,玩家如果覺得不過癮可以選擇再來一次,如果玩膩了,也可以選擇退出游戲
二、具體思路講解
1.總體思路
為了實作游戲的基本功能,我們應該有一個游戲選單,通過選單玩家可以選擇是進入游戲還是退出游戲,且為了可以使該游戲可以反復玩,這個程序應該是一個回圈,選擇退出游戲時就打破這個回圈,為了使代碼具有條理性我們定義唯一的主函式,然后按功能寫子函式,讓每一個子函式都有其意義,綜上我們需要列印選單模塊的一個子函式和游戲實作(包括電腦生成亂數和玩家可以回圈多次猜數字的功能)的子函式,不妨把是否選擇進入游戲放在主函式里,
2.選單功能的實作
因為我們把選擇程序放在主函式里,所以選單功能十分簡單,代碼示例如下
void menu()
{
printf("*****歡迎來到猜數字游戲*****\n");
printf("********1:進入游戲*********\n");
printf("********0:退出游戲*********\n");
printf("****************************\n");
}
3.主函式部分的實作
因為程式從主函式開始運行,到主函式結束時結束,所以主函式應該起到搭建整個游戲基本框架的功能,主函式不僅要實作是否選擇進入游戲還應該合理參考menu()和game()使整個程式形成有機的整體,
int main()
{
srand((unsigned)time(NULL));//定義一個隨機生成數,注意不能把它放在回圈陳述句中,否則會使生成的數字不夠隨機
int input = 0;
do
{
menu();
printf("請輸入你的選擇:");
scanf("%d",&input);
if (input == 1)
{
game();//選擇玩游戲則呼叫game()函式進行游戲功能的實作
}
else if (input == 0)
{
printf("游戲已經退出");
break;//因為while判斷條件,所以此句非必須
}
else
{
printf("您輸入的是無效指令,請重新輸入\n");//因為只有1和0才有意義,但玩家可能輸入其它數字,此處應給提示
}
} while (input != 0);
return 0;
}
4.游戲game()函式的代碼實作
在game()中我們要實作兩個功能1:電腦隨機生成一個1-100之間的亂數,2:玩家進行猜數字游戲,其中c語言實作生成亂數的原理復雜,需先定義一個亂數生成起點,再用rand()函式進行生成亂數,
代碼如下:
void game()
{
//1:實作1-100之間的亂數的生成
int random_num = rand()%100+1;//rand()是亂數生成函式需要搭配srand((unsigned)time(NULL))使用
//2:進入玩家猜數字環節
while (1)
{
int guess = 0;//guess中儲存的是玩家猜測的數字
printf("請輸入猜測的數字:");
scanf("%d", &guess);
if (guess < random_num)
printf("猜小了\n");
else if (guess > random_num)
printf("猜大了\n");
else
{
printf("恭喜你猜對了\n");
break;//為了防止死回圈,若猜對了應打破回圈
}
}
}
其中game需參考的頭檔案是#include<stdlib.h>
srand((unsigned)time(NULL))需參考的頭檔案是#include<time.h>
5.總程式代碼
如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//游戲規則
//1:電腦隨機生成一個1-100之間的數字
//2:玩家進行猜數字 電腦會提示猜大了或者猜小了直到玩家猜對游戲結束
//3:游戲可以重復玩,即玩家玩完一把后可選擇再玩一把或者是直接退出
void menu()
{
int input = 0;
printf("*****歡迎來到猜數字游戲*****\n");
printf("********1:進入游戲*********\n");
printf("********0:退出游戲*********\n");
printf("****************************\n");
}
void game()
{
//1:實作1-100之間的亂數的生成
int random_num = rand()%100+1;//rand()是亂數生成函式需要搭配srand((unsigned)time(NULL))使用
//2:進入玩家猜數字環節
while (1)
{
int guess = 0;//guess中儲存的是玩家猜測的數字
printf("請輸入猜測的數字:");
scanf("%d", &guess);
if (guess < random_num)
printf("猜小了\n");
else if (guess > random_num)
printf("猜大了\n");
else
{
printf("恭喜你猜對了\n");
break;//為了防止死回圈,若猜對了應打破回圈
}
}
}
int main()
{
srand((unsigned)time(NULL));
int input = 0;
do
{
menu();
printf("請輸入你的選擇:");
scanf("%d",&input);
if (input == 1)
{
game();
}
else if (input == 0)
{
printf("游戲已經退出");
break;
}
else
{
printf("您輸入的是無效指令,請重新輸入\n");
}
} while (input != 0);
return 0;
}
三.常見錯誤
1.再game()中把亂數陳述句段放在while回圈中,導致在游戲程序中,每猜一次亂數變化一次,導致如果第一次猜不對,就一直猜不對,
2.在game()中每次猜數字后if判斷條件寫錯,導致原本猜大了電腦顯示猜小了,原本猜小了顯示猜大了,這樣除非第一次猜對否則永遠猜不對,
本人是c語言初學者,可能會存在一些錯誤,還望各位大牛即時指正,在此謝過各位,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291265.html
標籤:其他
