用c語(yǔ)言實(shí)現(xiàn)《狼人殺》游戲發(fā)牌系統(tǒng)
1.前言
新年將至,親戚朋友在家中免不了玩一下桌游,狼人殺確實(shí)是一個(gè)不錯(cuò)選擇。那么針對(duì)正常的狼人殺玩法(8人局和12人局),博主利用一上午時(shí)間做了一個(gè)《狼人殺自動(dòng)發(fā)牌系統(tǒng)》(可查看游戲教程和人物屬性)。接下來(lái)就直接看程序效果和完整代碼吧!
2.程序效果



3.完整代碼
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
void charability();
void gamerule8();
void gamerule12();
void sortplayer(int x);
void giveplayer8();
void giveplayer12();
int main()
{
while(1)
{
int number;
printf("-----------------------------------輸入“1”選擇發(fā)牌模式(8人局 or 12人局)--------------------------------------------\n");
printf("------------------------------------------輸入“2”查看游戲規(guī)則--------------------------------------------------------\n");
printf("------------------------------------------輸入“3”查看角色技能-------------------------------------------------------\n");
printf("------------------------------------------輸入“4”退出游戲------------------------------------------------------------\n");
printf("請(qǐng)輸入:\n");
scanf("%d",&number);
if(number==1)
{
int number2;
system("cls");
printf("------------------------------------------輸入“1”為8人局模式發(fā)牌-----------------------------------------------------\n");
printf("------------------------------------------輸入“2”為12人局模式發(fā)牌----------------------------------------------------\n");
printf("請(qǐng)輸入:\n");
scanf("%d",&number2);
system("cls");
if(number2==1)
{
giveplayer8();
}else if(number2==2)
{
giveplayer12();
}else{
goto start;
}
}else if(number==2)
{
system("cls");
int number4;
printf("----------------------------------------輸入“1”查看8人局規(guī)則-----------------------------------------------------\n");
printf("----------------------------------------輸入“2”查看12人局規(guī)則-----------------------------------------------------\n");
printf("請(qǐng)輸入:\n");
scanf("%d",&number4);
system("cls");
if(number4==1)
{
gamerule8();
}else if(number4==2){
gamerule12();
}else{
goto start;
}
}else if(number==3){
charability();
}else if(number==4)
{
break;
}else{
start:
printf("----------------------------------------請(qǐng)重新輸入正確的指令--------------------------------------------------\n\n");
}
}
system("cls");
printf("-------------------------------------------游戲結(jié)束--------------------------------------------------------------------\n");
printf("-------------------------------------------游戲結(jié)束--------------------------------------------------------------------\n");
printf("-------------------------------------------游戲結(jié)束--------------------------------------------------------------------\n");
printf("--------------------------------------MADE BY CSDN: Wccyy883-----------------------------------------------------------\n");
system("pause");
return 0;
}
void charability()
{
system("cls");
printf("1.普通村民:\n本身沒(méi)有任何能力,一覺(jué)睡到天亮卻要考慮很多事情。平民會(huì)接收到真假混雜的信息,需要從中分辨和判斷出正確的信息。\n");
printf("2.狼人:\n每天晚上會(huì)殘忍地殺害一個(gè)村民,到了白天,狼人要假扮村民隱藏自己的身份,故意誤導(dǎo)或陷害其他村民。\n") ;
printf("3.預(yù)言家:\n每晚預(yù)言家可以窺視一個(gè)玩家的真實(shí)身份,是村莊里的靈魂人物,帶領(lǐng)好人走向勝利。\n");
printf("4.女巫:\n女巫擁有兩瓶藥,解藥可以救活一名當(dāng)晚被狼人殺害的玩家,毒藥可以毒殺一名玩家,女巫在每天晚上最多使用一瓶藥,女巫不可自救.\n");
printf("5.獵人:\n當(dāng)獵人被狼人殺害或被村民處決時(shí),他可以射殺任意一個(gè)玩家。但當(dāng)獵人由于意外死亡(如女巫的毒藥或者被殉情而死)他不可在死前射出子彈\n");
printf("6.警長(zhǎng):\n附加身份牌,游戲開(kāi)始后第一天從所有玩家中通過(guò)投票選舉出一名玩家授予警長(zhǎng)。警長(zhǎng)在白天最后發(fā)言并且投票時(shí)有1.5 票。\n");
printf("7.白癡:\n好人陣營(yíng),隱神牌,白癡平時(shí)與普通村民無(wú)異,但當(dāng)他被村民票死的時(shí)候,他可以翻牌亮出身份,若如此做就能免死。在所有玩家發(fā)言結(jié)束后,多一次發(fā)言機(jī)會(huì),但是翻牌以后的白癡不能投票。\n");
}
void gamerule8()
{
printf("8人狼人殺的配置一般為:3個(gè)狼、2個(gè)平民、1個(gè)預(yù)言家、1個(gè)獵人和1個(gè)女巫,這也是能湊成一局狼人殺最基本的搭配\n");
printf("因?yàn)檎G闆r下一局狼人殺無(wú)論人數(shù)多少都需要3個(gè)狼人和3個(gè)神職人員,否則游戲很難進(jìn)行下去,平民人數(shù)則根據(jù)你們現(xiàn)實(shí)的人數(shù)進(jìn)行調(diào)整\n");
}
void gamerule12()
{
printf("(標(biāo)準(zhǔn)12人局包括:4個(gè)平民,4個(gè)狼人,1個(gè)預(yù)言家,1個(gè)女巫,1個(gè)獵人,1個(gè)白癡) 法官:天黑請(qǐng)閉眼,狼人請(qǐng)睜眼。 假如你手牌是狼人(即12號(hào)玩家):\n");
printf("法官:天黑請(qǐng)閉眼,狼人請(qǐng)睜眼。 假如你手牌是狼人(即12號(hào)玩家): 你需要睜開(kāi)眼睛,此時(shí)會(huì)看見(jiàn)另外3個(gè)睜眼玩家,沒(méi)錯(cuò),他們就是你的狼同伴了,你的任務(wù)就是和他們一起,攜手把好人殺掉。\n");
printf("你無(wú)需比劃任何手勢(shì),也不需要努力去參透伙伴中所謂的高玩在比劃的任何手勢(shì),靜靜的看著他們即可,僅僅只需要記住伙伴們最終向法官出示的選擇殺掉的那個(gè)號(hào)碼。 然后閉眼,等待。 法官:狼人請(qǐng)閉眼,女巫請(qǐng)睜眼。\n");
printf("假如你手牌是女巫(即11號(hào)玩家): 整局游戲女巫手上有 一瓶救藥 和 一瓶毒藥,分別用來(lái) 救一個(gè)人 和 毒死一個(gè)人。 每一個(gè)晚上最多使用一瓶。\n");
}
void sortplayer(int x)
{
if(x==1)printf("普通平民\n");
else if(x==2)printf("普通平民\n");
else if(x==3)printf("狼\n");
else if(x==4)printf("狼\n");
else if(x==5)printf("狼\n");
else if(x==6)printf("女巫\n");
else if(x==7)printf("預(yù)言家\n");
else if(x==8)printf("獵人\n");
else if(x==9)printf("普通平民\n");
else if(x==10)printf("普通平民\n");
else if(x==11)printf("狼\n");
else if(x==12)printf("白癡\n");
}
void giveplayer8()
{
srand(time(NULL));
int a[8]={0};
int i;
int all;
for(i=0;i<8;i++)
{
while(1){
all=rand()%8+1;
int j,t;
t=0;
for(j=0;j<8;j++)
{
if(a[j]==all)
{
t=1;
}
}
if(t==0)
{
break;
}
}
a[i]=all;
}
printf("\n");
for(i=0;i<8;i++)
{
printf("%d號(hào)玩家身份:\n",i+1);
sortplayer(a[i]);
}
}
void giveplayer12()
{
srand(time(NULL));
int a[12]={0};
int i;
int all;
for(i=0;i<12;i++)
{
while(1){
all=rand()%12+1;
int j,t;
t=0;
for(j=0;j<12;j++)
{
if(a[j]==all)
{
t=1;
}
}
if(t==0)
{
break;
}
}
a[i]=all;
}
printf("\n");
for(i=0;i<12;i++)
{
printf("%d號(hào)玩家身份:\n",i+1);
sortplayer(a[i]);
}
}總結(jié)
到此這篇關(guān)于用c語(yǔ)言實(shí)現(xiàn)《狼人殺》游戲發(fā)牌系統(tǒng)的文章就介紹到這了,更多相關(guān)c語(yǔ)言狼人殺內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C語(yǔ)言解決經(jīng)典問(wèn)題之兔子產(chǎn)子
有一對(duì)兔子,從出生后的第 3 個(gè)月起每個(gè)月都生一對(duì)兔子。小兔子長(zhǎng)到第 3 個(gè)月后每個(gè)月又生一對(duì)兔子,假設(shè)所有的兔子都不死,問(wèn) 30 個(gè)月內(nèi)每個(gè)月的兔子總數(shù)為多少?本文將用C語(yǔ)言解決這一經(jīng)典問(wèn)題,需要的可以參考一下2022-03-03
C++詳解Primer文本查詢程序的實(shí)現(xiàn)
這個(gè)程序還是比較復(fù)雜的,把這句話作為文章的開(kāi)頭可以看出它的真實(shí)性.....這篇文章主要介紹了文本查詢程序的實(shí)現(xiàn),下面我們一起來(lái)看看2022-06-06
C++實(shí)現(xiàn)LeetCode(27.移除元素)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(27.移除元素),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C語(yǔ)言實(shí)現(xiàn)打印數(shù)字金字塔
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)打印數(shù)字金字塔方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C++實(shí)現(xiàn)LeetCode(5.最長(zhǎng)回文子串)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(5.最長(zhǎng)回文子串),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++?棧和隊(duì)列的實(shí)現(xiàn)超詳細(xì)解析
棧和隊(duì)列,嚴(yán)格意義上來(lái)說(shuō),也屬于線性表,因?yàn)樗鼈円捕加糜诖鎯?chǔ)邏輯關(guān)系為?"一對(duì)一"?的數(shù)據(jù),但由于它們比較特殊,因此將其單獨(dú)作為一章,做重點(diǎn)講解2022-03-03
C++實(shí)現(xiàn)簡(jiǎn)單FTP客戶端軟件開(kāi)發(fā)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單FTP客戶端軟件開(kāi)發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C語(yǔ)言中用棧+隊(duì)列實(shí)現(xiàn)隊(duì)列中的元素逆置
這篇文章主要介紹了C語(yǔ)言中用利用棧和隊(duì)列實(shí)現(xiàn)隊(duì)列中的元素逆置的相關(guān)資料,對(duì)正在學(xué)習(xí)的小伙伴有一定的參考價(jià)值,需要的可以參考一下,希望對(duì)你有所幫助2022-02-02

