1. 程式人生 > 程式設計 >C語言實現猜拳遊戲

C語言實現猜拳遊戲

一、問題

C語言實現猜拳遊戲,使用者自己選擇對手,可以建立玩家角色。可以記錄當前對戰情況(對戰局數,得分情況)

二、解決思路

猜拳遊戲大家都不陌生,從小玩到大,遇到棘手的選擇,猜拳往往是最能服眾的處理辦法。那麼今天我們就用C語言來實現這個小遊戲。這題比較簡單,建立兩個字元陣列,對應對手和玩家。接著使用者選擇要出的(石頭,剪刀,布),然後是電腦選擇,最後把兩個選擇進行對比,判斷輸贏。

三、程式碼實現

第一步,編寫game.h標頭檔案,把需要用到的函式宣告及一些巨集定義寫在裡面

#ifndef __GAME_H__
#define __GAME_H__

#include <stdio.h>
#include <windows.h>
#include <time.h>

#pragma warning(disable:4996)

void menu();
void gamestart(int com,char* comname,char* name);
int judge(int choice,int c);
int computer_round();
void show(int count,int ptimes,int ctimes,char* name);

#endif

第二步,編寫main函式,從這裡呼叫函式

#include "game.h"
int main()
{
 menu();//呼叫menu函式
 system("pause");
 return 0;
}

第三步,編寫game.c,把需要用到的函式都寫在裡面。

menu函式,指引使用者做出選擇

void menu()//menu函式,指引使用者做出選擇
{
 printf("**************\n");
 printf("**猜拳,開始**\n");
 printf("**************\n");
 printf("請選擇對方角色(1.奧特曼2.葫蘆娃3.孫悟空)\n");
 int com = 0;
 char comname[20] = { 0 };
 int flag = 1;
 while (flag) { //為使用者選擇的對手建立名字
 scanf("%d",&com);
 switch (com) {
 case 1:strcpy(comname,"奧特曼");
 flag = 0;
 break;
 case 2:strcpy(comname,"葫蘆娃");
 flag = 0;
 break;
 case 3:strcpy(comname,"孫悟空");
 flag = 0;
 break;
 default:printf("輸入有誤!\n");
 break;
 }
 }
 printf("請輸入你的名字:");
 char name[20] = { 0 };
 scanf("%s",name);//使用者自己建立角色
 printf("%sVS%s\n",name,comname);
 printf("要開始嗎?(y/n)\n");
 char choice = 0;
 while (1) {
 if (flag) { // 判斷使用者是不是第一次進行遊戲
 printf("要繼續嗎?(y/n)\n");
 }
 flag = 1;
 getchar();
 scanf("%c",&choice);
 switch (choice) {
 case 'y': gamestart(comname,name);//'y',開始遊戲,呼叫gamestart函式
 break;
 case 'n': printf("拜拜!\n");//'n',遊戲結束,函式呼叫結束
 return;
 default: printf("輸入有誤,請重新輸入!\n");
 break;
 }
 }
}

gamestart函式,遊戲開始

void gamestart(char* comname,char* name)
{
 int static ptimes = 0;//使用者贏的次數
 int static ctimes = 0;//電腦贏得次數
 int static count = 0; //遊戲對戰次數
 if (count) { 
 show(count,ptimes,ctimes,comname,name); //如果不是第一次進入遊戲,則顯示當前對戰情況
 }
 count++;//每進行一次遊戲,count自加一
 printf("請出拳:1.石頭2.剪刀3.布\n");
 int choice = 0;
 printf("你出拳:");
 int flag = 1;
 while (flag) {
 scanf("%d",&choice);
 switch (choice) {
 case 1:printf("石頭\n");
 flag = 0;
 break;
 case 2:printf("剪刀\n");
 flag = 0;
 break;
 case 3:printf("布\n");
 flag = 0;
 break;
 default:printf("輸入有誤,請重新輸入!\n");
 }
 }
 printf("%s出拳:",comname);
 int result = judge(choice,computer_round());//先呼叫computer_round函式,得到電腦的選擇
            //然後呼叫judge函式,判斷輸贏
 switch (result) {
 case -1:printf("很遺憾,你輸了!\n");
 ctimes++;   //記錄電腦贏的次數
 break;
 case 0:printf("還不錯,平局!\n");
 break;
 case 1:printf("恭喜你,你贏了!\n");
 ptimes++;   //記錄使用者贏的次數
 break;
 }
}

judge函式,判斷輸贏

int judge(int choice,int c)//judge函式,判斷輸贏
{
 if (choice == c) { //如果兩個選擇相同,則平局
 return 0;
 }
 if (choice - c == 1 || choice - c == -2) { // choice是使用者選擇,若符合這兩個結果,則證明使用者輸
 return -1;
 }
 else {   
 return 1; //否則使用者贏
 }
}

computer_round函式,電腦回合

int computer_round()//computer_round函式,電腦選擇出什麼
{
 srand((unsigned long)time(NULL));
 int c = rand() % 2 + 1; //與人的選項一樣,1.石頭2.剪刀3.布
 if (c == 1) {
 printf("石頭\n");
 }
 else if (c == 2) {
 printf("剪刀\n");
 }
 else {
 printf("布\n");
 }
 return c;
}

show函式,顯示當前對戰情況

void show(int count,char* name)
{
 system("cls");
 printf("%sVS%s\n",comname);
 printf("對戰次數:%d\n",count);
 printf("姓名  得分\n");
 printf("%6s  %d\n",ptimes);
 printf("%6s  %d\n",ctimes);
}

四、執行結果

C語言實現猜拳遊戲

C語言實現猜拳遊戲

C語言實現猜拳遊戲

C語言實現猜拳遊戲

五、寫在最後

既然在家都閒著沒事,不如寫個小遊戲;不耽誤學習,不耽誤娛樂。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。