C語言案例《猜拳游戲》

《猜拳游戲》

游戲說明

一、游戲簡介

本游戲為猜拳對戰類游戲,玩家可選擇不同對手進行石頭、剪刀、布的猜拳對決,支持重復游玩,直至玩家選擇退出。

二、游戲流程

  1. 選擇對手
    游戲開始后,玩家需從 3 名對手中選擇 1 名進行對戰,分別為:【1】哪吒、【2】敖丙、【3】敖閏。輸入對應數字 1-3 即可完成選擇,若輸入非數字或超出范圍,系統會提示重新輸入。
  2. 玩家出拳
    選擇對手后,玩家需選擇出拳類型:【1】石頭、【2】剪刀、【3】布。同樣需輸入數字 1-3,輸入無效時系統會提示修正。
  3. 對手出拳
    玩家出拳后,系統會為所選對手隨機生成出拳(1-3 隨機,分別對應石頭、剪刀、布),確保每局對戰的隨機性。
  4. 勝負判斷
    依據猜拳規則判定結果:
    • 石頭勝剪刀,剪刀勝布,布勝石頭;
    • 雙方出拳相同時為平局。
  5. 繼續或退出
    每局結束后,玩家可選擇是否繼續游戲:輸入【Y/y】繼續,輸入其他字符則退出游戲。

三、操作說明

  • 所有選擇均通過鍵盤輸入數字或字符,按回車鍵確認;
  • 若輸入錯誤(如非數字、超出范圍),系統會自動提示并要求重新輸入,無需重啟游戲。

四、注意事項

  • 游戲使用隨機種子初始化,確保每次運行時對手出拳的隨機性;
  • 退出游戲后,當前進程結束,需重新啟動程序方可再次游玩。

代碼


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc,char *argv[])
{// 初始化隨種子srand((unsigned)time(NULL));// 游戲主循環控制(默認可以重復玩)int game_running = 1;// 游戲頭設置printf("==========================================\n");printf("==========    猜拳游戲 v1.0     ==========\n");printf("==========      作者:d         ==========\n");printf("==========================================\n");// 主循環while(game_running){// 1.選擇對手printf("\n---------選擇對手-----------\n");// 創建一個變量,用來存儲對手應對的序號int opponent;while(1){printf("選擇對手:【1】哪吒 【2】敖丙 【3】敖閏\n");// 處理非法輸入if (scanf("%d", &opponent) != 1){// 清空輸入緩沖區非法字符while (getchar() != '\n');printf("請輸入數字1~3!\n");continue;}// 驗證輸入范圍if (opponent >= 1 && opponent <= 3) break;printf("選擇無效,請重新輸入!\n");}// 顯示對手消息,使用const修飾的變量還是變量,只不過不能再次改變const char *opponent_name = opponent == 1 ? "哪吒" : opponent == 2 ? "敖丙" : "敖閏";printf("對手,%s\n",opponent_name);// 2. 玩家出拳printf("------- 玩家出拳 -------\n");// 創建一個變量,用來存儲玩家出拳的序號int player_gesture;while(1){printf("請出拳:【1】石頭  【2】剪刀  【3】布\n");// 非法輸入校驗if (scanf("%d", &player_gesture) != 1){// 清空輸入緩沖區所有字符while (getchar() != '\n');printf("請輸入數字1~3!\n");continue;}// 輸入范圍校驗if (player_gesture >= 1 && player_gesture <= 3) break;printf("無效輸入,請重新輸入!\n");}// 顯示玩家出拳信息const char* player_gesture_name = player_gesture == 1 ? "石頭" : player_gesture == 2 ? "剪刀" : "布";printf("您出:%s\n", player_gesture_name);// 3.對手出拳printf("\n-------對手出拳-------\n");// 創建一個變量,作為對手的出拳序列,這個序列需要隨機生成1~3int computer_gesture = rand() % 3 + 1;const char* computer_gesture_name = computer_gesture == 1? "石頭" : computer_gesture == 2 ? "剪刀" : "布";// 顯示對手出拳信息printf("%s 出:%s\n",opponent_name,computer_gesture_name);// 4.判斷勝負printf("\n----- 判斷勝負 -----\n");// 創建一個變量,用來存儲比較的結果int result = (player_gesture - computer_gesture + 3) % 3;printf("戰況:");// 比較if (result == 0) printf("平局!\n");else if (result == 2) printf("您贏了!\n");else printf("您輸了!\n");//5.游戲退出printf("\n----- 游戲退出 -----\n");printf("繼續游戲?【Y/N】");// 清空輸入緩沖區while (getchar() != '\n');// 獲取控制臺輸入char choice = getchar(); // 等價于 char choice; scanf("%c", &choice);// 修改循環狀態game_running = choice == 'Y' || choice == 'y' ? 1 : 0;}printf("\n游戲結束!\n");return 0;
}

結果示例

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916236.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916236.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916236.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用python的頭文件Matplotlib時plt.show()【標題字體過小】問題根源與解決方案

使用python的頭文件Matplotlib時plt.show【標題字體過小】問題根源與解決方案1. 問題復現2. 問題分析3. 解決方案方案一&#xff08;推薦&#xff09;&#xff1a;使用 fig.suptitle 結合 subplots_adjust方案二&#xff1a;以保存文件函數plt.savefig為準方案三&#xff1a;不…

全面解析MySQL(3)——CRUD進階與數據庫約束:構建健壯數據系統的基石

> 本文將帶你深入探索MySQL的進階CRUD操作與核心約束機制,用設計原則的視角揭示數據庫如何保障數據世界的秩序。 ### 一、進階CRUD:數據操作的精密工具 #### 1. 精準篩選:WHERE子句的深度運用 ```sql -- 基礎篩選:價格大于50的菜品 SELECT * FROM dishes WHERE pric…

使用Redis實現MySQL的數據緩存

使用Redis來實現/mySQL的數據緩存的架構1&#xff1a;目標數據從mySQL讀取數據或者從Redis讀取數據 2&#xff1a;使用cannal監控mySQL&#xff1a;canal-server可以對mysql的blog實行拉取&#xff0c;可以拉去blog里面的(增&#xff0c;刪&#xff0c;改等操作&#xff0c;查詢…

linux配置ntp時間同步

目錄 1.設置時區 2.安裝chrony時間同步工具 3.修改chrony配置文件,添加阿里云NTP服務器作為時鐘源 4.重啟chrony服務&#xff0c;并查看同步結果 1.設置時區 timedatectl set-timezone Asia/Shanghai 2.安裝chrony時間同步工具 apt install chrony -y&#xff08;dnf ins…

powershell 實現批量把文件夾下的bmp文件轉換為jpg

以下是一個使用PowerShell將BMP圖像批量轉換為JPG&#xff08;質量85&#xff09;的腳本&#xff1a; <# .SYNOPSIS批量將BMP圖像轉換為JPG格式&#xff08;質量85&#xff09; .DESCRIPTION此腳本會遍歷指定文件夾中的所有BMP文件&#xff0c;并將它們轉換為JPG格式&#x…

星圖云開發者平臺新功能速遞 | 頁面編輯器:全場景編輯器,提供系統全面的解決方案

在數字化轉型的浪潮下&#xff0c;高效的低代碼開發工具成為企業和開發者的剛需&#xff0c;其需要針對Web、APP、H5等不同終端快速構建應用。但不同場景的開發往往需要不同的工具和技術棧&#xff0c;導致開發效率低、協作成本高。星圖云開發者平臺創新推出多類型頁面專用編輯…

激活函數Focal Loss 詳解?

Focal Loss 詳解?1. 背景?Focal Loss 是由 Lin et al. (2017) 在論文 《Focal Loss for Dense Object Detection》 中提出的一種損失函數&#xff0c;主要用于解決 目標檢測&#xff08;Object Detection&#xff09; 中的 類別不平衡問題&#xff0c;特別是在 One-Stage 檢測…

Python 鏈接各種中間件[Mysql\redis\mssql\tdengine]

文章目錄鏈接參數設置logger 日志redis 鏈接mysql 鏈接emqx 鏈接mssql 鏈接tdengine 鏈接采集OPCUA的點表的配置信息設備點表OPCUA 采集 數據程序數據采集邏輯鏈接參數 import randomtdengine_connection_params {username: root,password: taosdata,host: 127.0.0.1,port: 6…

C Primer Plus 第6版 編程練習——第11章(上)

本章共16題&#xff0c;分上中下三篇1.設計并測試一個函數&#xff0c;從輸入中獲取n個字符&#xff08;包括空白、制表符、換行符)&#xff0c;把結果存儲在一個數組里&#xff0c;它的地址被傳遞作為一個參數。int get_n_char(char arr[], int n) {int i 0;char ch;while (i…

Java開發崗面試記錄合集

一、Java 核心1. 基礎語法final關鍵字的作用修飾類&#xff1a;類不可被繼承&#xff08;如String類&#xff09;&#xff0c;保證類的穩定性和安全性。修飾方法&#xff1a;方法不可被重寫&#xff08;防止子類篡改父類核心邏輯&#xff0c;如工具類方法&#xff09;。修飾變量…

Linux 系統時間設置(date 和 ntpdate)-linux028

date 命令&#xff1a;查看或設置系統時間1. 查看當前時間date示例輸出&#xff1a;Tue Mar 4 01:36:45 CST 20142. 設置時間&#xff08;不設置日期&#xff09;date -s 09:38:40設置后輸出&#xff1a;Tue Mar 4 09:38:40 CST 20143. 設置完整日期和時間&#xff08;推薦格…

iOS上使用WebRTC推拉流的案例

一、庫集成 首先&#xff0c;確保在你的 Podfile 中添加依賴&#xff1a; pod GoogleWebRTC然后執行 pod install 安裝庫。 二、代碼示例 2.1、權限配置&#xff1a;在 Info.plist 中添加攝像頭、麥克風權限 <!-- 需要在 Info.plist 中添加以下權限 --> <key>NSCam…

API: return response as HTML table

想要把response table變成HTML的table&#xff0c;即想達到下面這種的話<table boarder"1" style"width:100%; boarder-collapse: collapse; text-align:left"><tr><th>Customer</th><th>Date</th><th>Debit Am…

OneNote 當前無法同步筆記。將繼續嘗試。 (錯誤代碼: 0xE00009C8 bb0ur)問題解決

之前因為同步錯誤&#xff0c;導致OneNote一個筆記本內容全部消失&#xff0c;筆記本內容如下圖同步狀態和錯誤如下&#xff1a;提醒錯誤為&#xff1a;OneNote 當前無法同步筆記。將繼續嘗試。 (錯誤代碼: 0xE00009C8 bb0ur)當時心態有點崩&#xff0c;也是查了好些資料&#…

OneCode3.0 Gallery 組件前后端映射機制:從注解配置到前端渲染的完整鏈路

一、注解體系與前端組件的映射基礎 ? OneCode Gallery 組件實現了 Java 注解與前端 UI 組件的深度綁定&#xff0c;通過GalleryAnnotation、GalleryItemAnnotation和GalleryViewAnnotation三個核心注解&#xff0c;構建了從后端配置到前端渲染的完整鏈路。這種映射機制的核心價…

規則分配腳本

需求&#xff1a; 1.根據用戶編寫的要報規則,去mysql庫里SysManage_Rule表獲取已經啟用的規則作為條件&#xff08;例如[{“field”: “關鍵詞”, “logic”: “AND”, “value”: “阿爾法”, “operator”: “”&#xff0c;, “assign_user”: “user222”}]&#xff09;條…

SEO實戰派白楊SEO:SEO中說的框計算、知心搜索(知識圖譜)是什么?有什么用處?

SEO里框計算是什么&#xff1f;有什么用處&#xff1f;SEO里框計劃算是百度2010年提出的&#xff0c;指當用戶搜索某些關鍵詞查詢時&#xff0c;搜索引擎在結果頁直接展示答案的技術&#xff08;如天氣、匯率等&#xff09;&#xff0c;用戶無需點擊網站即可獲取信息&#xff0…

軟件工程:軟件需求

簡介本篇博客記錄了我在軟件工程學習過程中關于軟件需求與面向對象基礎知識的學習體會和要點總結。博客共分為三個關卡內容&#xff1a;第1關圍繞“軟件需求”的定義、分類及分析過程展開&#xff0c;讓我清晰地理解了功能性需求、非功能性需求與約束條件的區別&#xff1b;第2…

MES系統是什么,有哪些特性?

MES系統是一套面向制造企業車間執行層的生產信息化管理系統。它能夠為操作人員和管理人員提供計劃的執行、跟蹤以及所有資源&#xff08;包括人、設備、物料、客戶需求等&#xff09;的當前狀態。通過MES系統可以對從訂單下達到產品完成的整個生產過程進行優化管理。當工廠發生…

Vue2下

六&#xff1a;vue-router &#xff08;重要&#xff09; &#xff08;一&#xff09;. 對路由的理解 1.什么是路由 路由&#xff08;Router&#xff09; 是管理頁面跳轉和 URL 與視圖映射關系的機制&#xff0c;核心作用是&#xff1a;根據不同的 URL 路徑&#xff0c;展示對…