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* comname, 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, int ptimes, int ctimes, char* comname, char* name)
{
 system("cls");
 printf("%sVS%s\n", name, comname);
 printf("对战次数:%d\n", count);
 printf("姓名  得分\n");
 printf("%6s  %d\n", name, ptimes);
 printf("%6s  %d\n", comname, ctimes);
}

四、运行结果

五、写在最后

既然在家都闲着没事,不如写个小游戏;不耽误学习,不耽误娱乐。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现的猜拳游戏代码分享

    这是一个简单的猜拳游戏(剪子包子锤),让你与电脑对决.你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负. 下面的代码会实现一个猜拳游戏,让你与电脑对决.你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负. 启动程序后,让用户出拳,截图: 用户出拳,显示对决结果:截图: 代码实现: #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { char gamer; // 玩家出拳 int

  • C语言游戏之猜数字

    本文实例为大家分享了C语言实现猜数字游戏的具体代码,供大家参考,具体内容如下 标题 1-100之间我已经想好了一个数了,看你能不能猜到,五次机会哦! 代码在此,请求出战! #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int c; puts("这是一个神奇的猜数字小游戏,如果你想玩的话,请按123继续,不想玩啊就按321"); scanf_s("%d&q

  • C语言实现的猜数字小游戏

    本文实例为大家分享了C语言实现猜数字小游戏的具体代码,供大家参考,具体内容如下 代码如下 #include <stdio.h> #include<stdlib.h> #include<time.h> //rand为产生随机数的函数 void game() { srand((unsigned)time(NULL)); int key = (int)rand() % 100; //产生一个1---100之间的数 int ret = 0; while (1) { printf

  • C语言实现猜数字游戏

    本文实例为大家分享了C语言猜数字的具体代码,供大家参考,具体内容如下 题目:电脑随机给出一个数字,在一定范围内猜,有提示 问题分析: 电脑根据函数随机给出一个范围内的数字: 用户输入数字,去猜大小 对比数字,电脑给出提示 不断循环,直到猜正确 注意: 因为随机函数rand()是特殊的函数,计算机不会实现真正的随机数,所以需要一个seek来传给 rand(). 代码如下: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<

  • C语言实现猜数字大小的游戏

    本文实例为大家分享了C语言实现猜数字大小的具体代码,供大家参考,具体内容如下 void menu() void menu() { printf("******** 猜数字游戏 ********\n"); printf("*********** 1.开始 *************\n"); printf("*********** 0.退出 *************\n"); } 简单的一个菜单用于显示. void game() void gam

  • C语言实现猜数字小游戏

    本文实例为大家分享了C语言猜数字的具体代码,供大家参考,具体内容如下 一.描述 猜数字游戏. 二. 程序 使用srand((unsigned)time(NULL)),产生随机数种子. int random = rand() % 100 + 1,产生0~100之间的随机数. 应加上头文件#include<time.h> #include<stdio.h> #include<windows.h> #include<time.h> void menu(){ pri

  • C语言实现猜拳游戏

    一.问题 C语言实现猜拳游戏,用户自己选择对手,可以创建玩家角色.可以记录当前对战情况(对战局数,得分情况) 二.解决思路 猜拳游戏大家都不陌生,从小玩到大,遇到棘手的选择,猜拳往往是最能服众的处理办法.那么今天我们就用C语言来实现这个小游戏.这题比较简单,创建两个字符数组,对应对手和玩家.接着用户选择要出的(石头,剪刀,布),然后是电脑选择,最后把两个选择进行对比,判断输赢. 三.代码实现 第一步,编写game.h头文件,把需要用到的函数声明及一些宏定义写在里面 #ifndef __GAME_

  • C语言详细实现猜拳游戏流程

    目录 一.游戏逻辑 二.思维导图 三.游戏过程 四.代码分析 1.设置随机数的方法 2.设置计算机出拳的方法 3.判断输赢的方法 4.玩家猜拳 五.完整代码 一.游戏逻辑 1.打印选择菜单(1.play,0.exit) 2.提示玩家0.1.2 分别代表石头.剪刀.布 3.设置与计算机博弈次数 4.为计算机设置出拳(调用rand()函数生成0.1.2其中一个随机数) 5.玩家出拳 6.判断输赢 7.展示玩家和计算机出的拳 8.若退出游戏展示玩家胜负与平局信息 二.思维导图 三.游戏过程 四.代码分

  • C语言对对碰游戏源码分享

    本文实例为大家分享了C语言对对碰游戏的具体代码,供大家参考,具体内容如下 //////////////////////////////////////// //画素材的x和y都是反的,因为x表示行,但是画出来x表示列,y同 //////////////////////////////////////// #include <graphics.h> #include <fstream> #include <strstream> #include <iomanip&g

  • python实现猜拳游戏

    对于一个初级学习python的人,这将是一个非常简单而有趣的内容: 代码非常简单,主要是:随机函数–需要导入random模块与条件语句的一个简单实用: 下面,简单介绍一下python中的随机函数: random.random()用于生成一个0到1的随机符小数: 0 <= n < 1.0 random.random() # Random float x, andom.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,

  • 基于C语言实现五子棋游戏完整实例代码

    本文实例讲述了基于C语言实现五子棋游戏的方法,代码备有比较完整的注释,可以帮助读者更好的加以理解. 五子棋游戏代码如下: /* * 使用键盘的上下左右键移动棋盘,空格键表示下棋,ESC键退出程序 */ #include <stdio.h> #include <stdlib.h> #include <bios.h> #include <graphics.h> #include<malloc.h> /* * 对应键盘键的十六进制数字 */ #defi

  • C#面向对象编程之猜拳游戏实现方法

    本文实例讲述了C#面向对象编程之猜拳游戏实现方法.分享给大家供大家参考.具体实现方法如下: 1.需求 现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢. 2.需求分析 根据需求,来分析一下对象,可分析出:玩家对象(Player).计算机对象(Computer).裁判对象(Judge). 玩家出拳由用户控制,使用数字代表:1石头.2剪子.3布 计算机出拳由计算机随机产生 裁判根据玩家与计算机的出拳情况进行判断输赢. 3.类对象的实现 ①.玩家类示例代码: 复制

  • C语言实现小猫钓鱼游戏

    本文实例为大家分享了C语言实现小猫钓鱼游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<time.h> #include<string.h> #include<stdlib.h> #include<windows.h> typedef struct { int data[3600]; int col[3600]; int top; } stack; typedef struct { int data[

  • C语言实现扫雷游戏及其优化

    本文实例为大家分享了C语言实现扫雷游戏及其优化的具体代码,供大家参考,具体内容如下 关于扫雷优化 1.核心思想:使用两个二维数组进行设计,一个用于显示,一个用于后台雷的布置. 2.使用宏常量,后期可以任意修改游戏难度. 3.关于扫雷拓展模块,目前使用的方法比较low,若周围均没有,则全部显示. 4.剩余位置数使用全局变量count,必须考虑拓展之后count变化. 有待改进之处 1.需设计标记雷的步骤,增加用户体验. 2.拓展方式有待改进. 3.界面布局仍需要进行优化. 扫雷游戏代码 #incl

  • C语言自定义军旗游戏源码

    本文实例为大家分享了C语言自定义军旗游戏的具体代码,供大家参考,具体内容如下 #include <graphics.h> #include <time.h> #define CHESIZE 40 // 棋盘尺寸,不能随意调整 #define RESETX 170 #define RESETY 350 // 重置原点 typedef enum // 要用到的棋子ID { si, jun, shi, lv, tuan, ying, lian, pai, ban, gong, fei,

随机推荐