C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字小游戲
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字小游戲的具體代碼,供大家參考,具體內(nèi)容如下
猜數(shù)字游戲是令游戲機(jī)隨機(jī)產(chǎn)生一個(gè)100以內(nèi)的正整數(shù)
用戶輸入一個(gè)數(shù)對(duì)其進(jìn)行猜測(cè),需要你編寫(xiě)程序自動(dòng)對(duì)其與隨機(jī)產(chǎn)生的被猜數(shù)進(jìn)行比較
并提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了
如果猜到,則結(jié)束程序。程序還要求統(tǒng)計(jì)猜的次數(shù),如果1次猜出該數(shù),提示“Bingo!”
如果3次以內(nèi)猜到該數(shù),則提示“Lucky You!”
如果超過(guò)3次但是在N(>3)次以內(nèi)(包括第N次)猜到該數(shù),則提示“Good Guess!”
如果超過(guò)N次都沒(méi)有猜到,則提示“Game Over”,并結(jié)束程序
如果在到達(dá)N次之前,用戶輸入了一個(gè)負(fù)數(shù),也輸出“Game Over”,并結(jié)束程序
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
int main()
{
printf("游戲規(guī)則如下:游戲有兩種模式需要用戶輸入數(shù)字1或2來(lái)選擇,然后用戶輸入自己的猜想并根據(jù)提示靠近答案\n");
printf("如果1次猜出該數(shù)提示Bingo!\n如果3次以內(nèi)猜到該數(shù)則提示Lucky You!\n如果超過(guò)3次但是在N(>3)次以內(nèi)包括第N次猜到該數(shù)則提示Good Guess!\n如果超過(guò)N次都沒(méi)有猜到則提示Game Over\n如果在到達(dá)N次之前用戶輸入了一個(gè)負(fù)數(shù)也輸出Game Over\n");
PlaySound("background", NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
int a,N,x,i=1,n;
printf("請(qǐng)選擇您的模式:1.電腦隨機(jī)產(chǎn)生0-10次最大猜測(cè)次數(shù);2.默認(rèn)最大次數(shù)為5次\n");
printf("請(qǐng)輸入您選擇的模式代碼:");
scanf("%d",&n);
printf("游戲已開(kāi)始");
if(n==1)
{
srand((unsigned)time(NULL));
a=rand()%100;
N=rand()%10;
for(i=1;i<=N;i++)
{
printf("請(qǐng)輸入你的猜想:");
scanf("%d",&x);
if(x>a) printf("猜大了\n");
else if(x>0&&x<a) printf("猜小了\n");
else if(x<0)
{
printf("游戲結(jié)束\n");
break;
}
else if(x==a)
{
switch(i)
{
case 1: printf("Bingo\n!"); break;
case 2:
case 3: printf("Lucky You\n!"); break;
default :printf("Good Guess!\n"); break;
}
break;
}
}
if(i>N)
printf("游戲結(jié)束\n");
}
if(n==2)
{
N=5;
srand((unsigned)time(NULL));
a=rand()%100;
for(i=1;i<=N;i++)
{
printf("請(qǐng)輸入你的猜想:");
scanf("%d",&x);
if(x>a) printf("猜大了\n");
else if(x>0&&x<a) printf("猜小了\n");
else if(x<0)
{
printf("游戲結(jié)束\n");
break;
}
else if(x==a)
{
switch(i)
{
case 1: printf("Bingo!\n"); break;
case 2:
case 3: printf("Lucky You!\n"); break;
default :printf("Good Guess!\n"); break;
}
break;
}
}
if(i>N)
printf("次數(shù)用盡,游戲結(jié)束\n");
}
printf("答案是:%d",a);
getch();
return 0;
}
之前小編收藏的一段C語(yǔ)言猜數(shù)字小游戲代碼分享給大家:
#include <stdio.h>//頭文件部分可以進(jìn)行自己查詢
#include <time.h>
#include <stdlib.h>
void menu()//實(shí)現(xiàn)菜單的部分
{
printf("**********************\n");
printf("****1.play 0.exit****\n");
printf("**********************\n");
}
void game()//游戲運(yùn)行的主要部分
{
//猜數(shù)字游戲的實(shí)現(xiàn)
//1.生成隨機(jī)數(shù)
int ret =rand()%100+1;//利用取模吧隨機(jī)的范圍限制在1-100之間
//rand函數(shù)返回了一個(gè)0-32767之間的數(shù)字
int guess;
while(1)
{
printf("請(qǐng)輸入你猜的數(shù)字:");//提示玩家進(jìn)行輸入
scanf("%d",&guess);//玩家進(jìn)行輸入
if(guess<ret)
{
printf("猜小了\n");
}
else if(guess>ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜對(duì)了\n");
break;
}
}
}
int main(void)//主函數(shù)
{
int input;
srand((unsigned int)time(NULL));
//srand是隨機(jī)數(shù)產(chǎn)生器
//unsigned int強(qiáng)制轉(zhuǎn)換time(NULL)類型,NULL是空指針
do
{
menu();//顯示菜單1開(kāi)始,0結(jié)束
printf("請(qǐng)選擇:");//提示玩家進(jìn)行選擇是否開(kāi)始游戲
scanf("%d",&input);//玩家輸入自己選擇的地方
switch(input)//利用選擇語(yǔ)句進(jìn)行選擇1開(kāi)始,0結(jié)束,如果輸入其他的就提示錯(cuò)誤
{
case 1:
game();//游戲的主要部分
break;
case 0:
printf("退出游戲");
break;
default:
printf("選擇錯(cuò)誤");
break;
}
}while(input);
return 0;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++深入探究類與對(duì)象之對(duì)象模型與this指針使用方法
C++對(duì)象模型中只有類的非static成員以及一個(gè)指向虛函數(shù)表的指針被配置于類對(duì)象內(nèi),其他都在類對(duì)象外,在 C++ 中,每一個(gè)對(duì)象都能通過(guò) this 指針來(lái)訪問(wèn)自己的地址。this 指針是所有成員函數(shù)的隱含參數(shù)。因此,在成員函數(shù)內(nèi)部,它可以用來(lái)指向調(diào)用對(duì)象2022-04-04
C++判斷主機(jī)是否處于聯(lián)網(wǎng)狀態(tài)
這篇文章主要為大家詳細(xì)介紹了C++判斷主機(jī)是否處于聯(lián)網(wǎng)狀態(tài),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
c++中數(shù)字與字符串之間的轉(zhuǎn)換方法(推薦)
下面小編就為大家?guī)?lái)一篇c++中數(shù)字與字符串之間的轉(zhuǎn)換方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
C語(yǔ)言簡(jiǎn)明講解快速排序的應(yīng)用
快速排序由于排序效率在同為O(N*logN)的幾種排序方法中效率較高,因此經(jīng)常被采用,再加上快速排序思想----分治法也確實(shí)實(shí)用,因此很多軟件公司的筆試面試,包括像騰訊,微軟等知名IT公司都喜歡考這個(gè),還有大大小的程序方面的考試如軟考,考研中也常常出現(xiàn)快速排序的身影2022-05-05
Qt?TCP網(wǎng)絡(luò)通信學(xué)習(xí)
用于數(shù)據(jù)傳輸?shù)牡蛯泳W(wǎng)絡(luò)協(xié)議,多個(gè)物聯(lián)網(wǎng)協(xié)議都是基于TCP協(xié)議的,這篇文章為大家介紹了Qt?TCP網(wǎng)絡(luò)通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C語(yǔ)言計(jì)算字符串最后一個(gè)單詞的長(zhǎng)度
大家好,本篇文章主要講的是C語(yǔ)言計(jì)算字符串最后一個(gè)單詞的長(zhǎng)度,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
詳解C++類的成員函數(shù)做友元產(chǎn)生的循環(huán)依賴問(wèn)題
這篇文章主要為大家詳細(xì)介紹了C++類的成員函數(shù)做友元產(chǎn)生的循環(huán)依賴問(wèn)題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
C++中vector迭代器失效問(wèn)題的原因及解決方案
迭代器(iterator)是一種用于遍歷數(shù)據(jù)集合的的對(duì)象,它提供了一種訪問(wèn)數(shù)據(jù)集合中元素的方式,而無(wú)需暴露數(shù)據(jù)集合內(nèi)部的細(xì)節(jié),使用迭代器,我們可以對(duì)數(shù)據(jù)集合中的每個(gè)元素進(jìn)行處理,本文介紹了C++中關(guān)于vector迭代器失效問(wèn)題的原因及解決方案,需要的朋友可以參考下2024-09-09

