C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單猜拳小游戲
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的一個(gè)猜拳小游戲,供大家參考,具體內(nèi)容如下
全部代碼
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<Windows.h> int pcinput; //電腦輸入 int userinput; //用戶輸入 #define echo ">_ " //俺覺(jué)得好看 char case_win(int left, int right);//判斷哪邊贏了;left是玩家,right是電腦 int echoinput(int inputnum);//根據(jù)兩個(gè)全局變量輸出對(duì)應(yīng)進(jìn)行的操作 int main() { printf("規(guī)則\n\n"); puts("1.石頭\n"); puts("2.剪刀\n"); puts("3.布 \n"); printf("%s你的輸入:", echo); scanf_s("%d", &userinput); printf("\n"); if (echoinput(userinput) == 1) { Sleep(1000); system("cls"); main(); } else { printf("\n"); printf("\n"); printf("%s等待電腦結(jié)果.\0", echo); Sleep(500); printf("."); Sleep(500); printf(".\n"); srand(time(NULL)); pcinput = rand() % 3 + 1; printf("\n"); echoinput(pcinput); printf("\n"); printf("\n"); if (case_win(userinput,pcinput) == 'L') { printf("玩家勝利"); } else if(case_win(userinput,pcinput)=='R'){ printf("電腦勝利"); } else { printf("雙方平局"); } printf("\n"); printf("\n"); printf("--------------------"); printf("\n"); printf("\n"); printf("三秒后繼續(xù)..."); Sleep(1000); printf("二秒后繼續(xù)..."); Sleep(1000); printf("一秒后繼續(xù)..."); Sleep(1000); system("cls"); main(); } return 0; } char case_win(int left, int right) { char reslut; /* *聲明 *石頭->1 *剪刀->2 * _布->3 */ /* * 規(guī)則: * 石頭->剪刀 * 剪刀->布 * 布->石頭 */ /*判斷,左邊是玩家*/ if (left == right) { reslut = 'P'; } else { if (left == 1) { if (right == 2) { reslut = 'L'; } else if (right == 3) { reslut = 'R'; } } else if (left == 2) { if (right == 1) { reslut = 'R'; } else if (right == 3) { reslut = 'L'; } } else if (left == 3) { if (right == 1) { reslut = 'L'; } else if (right == 2) { reslut = 'R'; } } } return reslut; } int echoinput(int inputnum) { int reslut = 0; switch (inputnum) { case 1: printf("(石頭)"); break; case 2: printf("(剪刀)"); break; case 3: printf("(布)"); break; default: printf("(輸入有誤)"); reslut = 1; break; } return reslut; }
全局變量
int pcinput; //電腦輸入 int userinput; //用戶輸入
函數(shù)定義
char case_win(int left, int right);//判斷哪邊贏了;left是玩家,right是電腦 int echoinput(int inputnum);//根據(jù)兩個(gè)全局變量輸出對(duì)應(yīng)進(jìn)行的操作
打印 規(guī)則和輸入提示
printf("規(guī)則\n\n"); puts("1.石頭\n"); puts("2.剪刀\n"); puts("3.布 \n"); printf("%s你的輸入:", echo); scanf_s("%d", &userinput); printf("\n");
Main方法中的主要邏輯
int main() { printf("規(guī)則\n\n"); puts("1.石頭\n"); puts("2.剪刀\n"); puts("3.布 \n"); printf("%s你的輸入:", echo); scanf_s("%d", &userinput); printf("\n"); if (echoinput(userinput) == 1) { Sleep(1000); system("cls"); main(); } else { printf("\n"); printf("\n"); printf("%s等待電腦結(jié)果.\0", echo); Sleep(500); printf("."); Sleep(500); printf(".\n"); srand(time(NULL)); pcinput = rand() % 3 + 1; printf("\n"); echoinput(pcinput); printf("\n"); printf("\n"); if (case_win(userinput,pcinput) == 'L') { printf("玩家勝利"); } else if(case_win(userinput,pcinput)=='R'){ printf("電腦勝利"); } else { printf("雙方平局"); } printf("\n"); printf("\n"); printf("--------------------"); printf("\n"); printf("\n"); printf("三秒后繼續(xù)..."); Sleep(1000); printf("二秒后繼續(xù)..."); Sleep(1000); printf("一秒后繼續(xù)..."); Sleep(1000); system("cls"); main(); } return 0; }
函數(shù)實(shí)現(xiàn)-判斷輸入
當(dāng)參數(shù)inputnum為1,2,3時(shí),進(jìn)行對(duì)應(yīng)的打印操作,如果有誤在Main方法中清屏遞歸
int echoinput(int inputnum) { int reslut = 0; switch (inputnum) { case 1: printf("(石頭)"); break; case 2: printf("(剪刀)"); break; case 3: printf("(布)"); break; default: printf("(輸入有誤)"); reslut = 1; break; } return reslut; }
邏輯函數(shù)-判斷輸贏
char case_win(int left, int right) { char reslut; /* *聲明 *石頭->1 *剪刀->2 * _布->3 */ /* * 規(guī)則: * 石頭->剪刀 * 剪刀->布 * 布->石頭 */ /*判斷,左邊是玩家*/ if (left == right) { reslut = 'P'; } else { if (left == 1) { if (right == 2) { reslut = 'L'; } else if (right == 3) { reslut = 'R'; } } else if (left == 2) { if (right == 1) { reslut = 'R'; } else if (right == 3) { reslut = 'L'; } } else if (left == 3) { if (right == 1) { reslut = 'L'; } else if (right == 2) { reslut = 'R'; } } } return reslut; }
實(shí)現(xiàn)邏輯函數(shù)的返回值
/* 當(dāng)返回值reslut為'L'時(shí),玩家勝利 當(dāng)返回值reslut為'R'時(shí),電腦勝利 否則雙方平局 */
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言以數(shù)據(jù)塊的形式讀寫(xiě)文件實(shí)例代碼
本文主要介紹C語(yǔ)言中以數(shù)據(jù)塊的形式讀寫(xiě)文件,這里提供了實(shí)例代碼舉例說(shuō)明,有需要的小伙伴可以參考下2016-07-07C語(yǔ)言函數(shù)調(diào)用基礎(chǔ)應(yīng)用詳解
函數(shù)就是一段封裝好的,可以重復(fù)使用的代碼,它使得我們的程序更加模塊化,不需要編寫(xiě)大量重復(fù)的代碼。這篇文章主要介紹了c語(yǔ)言是如何處理函數(shù)調(diào)用的?需要的朋友可以參考下2023-02-02舉例講解C語(yǔ)言對(duì)歸并排序算法的基礎(chǔ)使用
這篇文章主要介紹了C語(yǔ)言對(duì)歸并排序算法的使用,歸并排序算法的平均事件復(fù)雜度為(n\log n),需要的朋友可以參考下2016-05-05C++設(shè)計(jì)模式之組合模式(Composite)
這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之組合模式Composite,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Qt5開(kāi)發(fā)視頻播放器的項(xiàng)目實(shí)踐
Qt對(duì)音視頻的播放和控制、相機(jī)拍攝、收音機(jī)等多媒體應(yīng)用提供了強(qiáng)大的支持,本文主要介紹了Qt5開(kāi)發(fā)視頻播放器,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08C++?string如何獲取文件路徑文件名、文件路徑、文件后綴(兩種方式)
這篇文章主要介紹了C++?string如何獲取文件路徑文件名、文件路徑、文件后綴(兩種方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-06-06