一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言實現(xiàn)猜拳游戲

C語言實現(xiàn)猜拳游戲

2021-08-17 12:10唐學長 C/C++

這篇文章主要為大家詳細介紹了C語言實現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、問題

C語言實現(xiàn)猜拳游戲,用戶自己選擇對手,可以創(chuàng)建玩家角色。可以記錄當前對戰(zhàn)情況(對戰(zhàn)局數(shù),得分情況)

二、解決思路

猜拳游戲大家都不陌生,從小玩到大,遇到棘手的選擇,猜拳往往是最能服眾的處理辦法。那么今天我們就用C語言來實現(xiàn)這個小游戲。這題比較簡單,創(chuàng)建兩個字符數(shù)組,對應對手和玩家。接著用戶選擇要出的(石頭,剪刀,布),然后是電腦選擇,最后把兩個選擇進行對比,判斷輸贏。

三、代碼實現(xiàn)

第一步,編寫game.h頭文件,把需要用到的函數(shù)聲明及一些宏定義寫在里面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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* comname, char* name);
 
#endif

第二步,編寫main函數(shù),從這里調用函數(shù)

?
1
2
3
4
5
6
7
#include "game.h"
int main()
{
 menu();//調用menu函數(shù)
 system("pause");
 return 0;
}

第三步,編寫game.c,把需要用到的函數(shù)都寫在里面。

menu函數(shù),指引用戶做出選擇

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void menu()//menu函數(shù),指引用戶做出選擇
{
 printf("**************\n");
 printf("**猜拳,開始**\n");
 printf("**************\n");
 printf("請選擇對方角色(1.奧特曼2.葫蘆娃3.孫悟空)\n");
 int com = 0;
 char comname[20] = { 0 };
 int flag = 1;
 while (flag) { //為用戶選擇的對手創(chuàng)建名字
 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);//用戶自己創(chuàng)建角色
 printf("%sVS%s\n", name,comname);
 printf("要開始嗎?(y/n)\n");
 char choice = 0;
 while (1) {
 if (flag) { // 判斷用戶是不是第一次進行游戲
 printf("要繼續(xù)嗎?(y/n)\n");
 }
 flag = 1;
 getchar();
 scanf("%c", &choice);
 switch (choice) {
 case 'y': gamestart(comname,name);//'y',開始游戲,調用gamestart函數(shù)
 break;
 case 'n': printf("拜拜!\n");//'n',游戲結束,函數(shù)調用結束
 return;
 default: printf("輸入有誤,請重新輸入!\n");
 break;
 }
 }
}

gamestart函數(shù),游戲開始

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void gamestart(char* comname,char* name)
{
 int static ptimes = 0;//用戶贏的次數(shù)
 int static ctimes = 0;//電腦贏得次數(shù)
 int static count = 0; //游戲對戰(zhàn)次數(shù)
 if (count) {
 show(count,ptimes,ctimes,comname,name); //如果不是第一次進入游戲,則顯示當前對戰(zhàn)情況
 }
 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函數(shù),得到電腦的選擇
      //然后調用judge函數(shù),判斷輸贏
 switch (result) {
 case -1:printf("很遺憾,你輸了!\n");
 ctimes++;  //記錄電腦贏的次數(shù)
 break;
 case 0:printf("還不錯,平局!\n");
 break;
 case 1:printf("恭喜你,你贏了!\n");
 ptimes++;  //記錄用戶贏的次數(shù)
 break;
 }
}

judge函數(shù),判斷輸贏

?
1
2
3
4
5
6
7
8
9
10
11
12
int judge(int choice, int c)//judge函數(shù),判斷輸贏
{
 if (choice == c) { //如果兩個選擇相同,則平局
 return 0;
 }
 if (choice - c == 1 || choice - c == -2) { // choice是用戶選擇,若符合這兩個結果,則證明用戶輸
 return -1;
 }
 else
 return 1; //否則用戶贏
 }
}

computer_round函數(shù),電腦回合

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int computer_round()//computer_round函數(shù),電腦選擇出什么
{
 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函數(shù),顯示當前對戰(zhàn)情況

?
1
2
3
4
5
6
7
8
9
void show(int count, int ptimes, int ctimes, char* comname, char* name)
{
 system("cls");
 printf("%sVS%s\n", name, comname);
 printf("對戰(zhàn)次數(shù):%d\n", count);
 printf("姓名 得分\n");
 printf("%6s %d\n", name, ptimes);
 printf("%6s %d\n", comname, ctimes);
}

四、運行結果

C語言實現(xiàn)猜拳游戲

C語言實現(xiàn)猜拳游戲

C語言實現(xiàn)猜拳游戲

C語言實現(xiàn)猜拳游戲

五、寫在最后

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_43647942/article/details/104281907

延伸 · 閱讀

精彩推薦
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    strcpy 和strcnpy函數(shù)是字符串復制函數(shù)。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數(shù)使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C/C++經(jīng)典實例之模擬計算器示例代碼

    C/C++經(jīng)典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經(jīng)典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++深入理解goto語句的替代實現(xiàn)方式分析

    深入理解goto語句的替代實現(xiàn)方式分析

    本篇文章是對goto語句的替代實現(xiàn)方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網(wǎng)7342020-12-03
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    這篇文章主要介紹了c++ 單線程實現(xiàn)同時監(jiān)聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現(xiàn)電腦關機程序

    C語言實現(xiàn)電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數(shù)據(jù)都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數(shù)據(jù),C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
主站蜘蛛池模板: www视频免费观看 | 91精品国产人成网站 | 韩日视频在线观看 | 91视频一区| 青青在线视频观看 | 免费视频一区二区 | 国产精品视频久久久久 | 99视频久久精品久久 | 婷婷色六月 | 暖暖日本在线观看免费 | 禁忌高h | 97色蜜桃 | 教练你好大轻点漫 | 母乳在线播放 | 国产欧美一区视频在线观看 | 亚洲AV久久无码精品九号软件 | 91香蕉在线 | 青草青草伊人精品视频 | 久久青青草原精品国产软件 | 性奶乳妇 | 秋霞午夜伦午夜高清福利片 | 好吊色永久免费视频大全 | 东北美女野外bbwbbw免费 | 亚洲国产精品久久无套麻豆 | 色噜噜狠狠狠综合曰曰曰88av | 免费av在线看 | 羞羞在线观看 | 国产成人精品系列在线观看 | 日本中文字幕在线视频站 | 四虎影业 | 99热久久这里只有精品6国产网 | 91肥熟国产老肥熟在线 | 扒开黑女人p大荫蒂老女人 扒开大腿狠狠挺进视频 | 美女gif趴跪式抽搐动态图 | 成人精品网 | 亚洲国产综合久久精品 | 日本高清有码视频 | 盲井在线 | 大杳蕉在线影院在线播放 | 高h视频免费观看 | 日韩在线视频一区二区三区 |