C语言写猜拳游戏中遇到的函数循环小问题

  各位可能在初学C语言的时候都有写过猜拳游戏。但在写猜拳的函数时,避免不了会使用循环。

  当函数被套在一个循环中的时候,你的计分变量可能就会被重置为函数体里的初始值。那么怎么解决这个问题?

  其实很简单,你需要在循环体中加入一个累加变量,从而使得函数体的单循环计分通过main函数里的循环成为最后的总积分,并且由此来判断最终你的积分和输赢。

  以下是我写的部分代码 ,欢迎指正!

1.函数体部分

int compare(int x,int y){
    int  j = 0;//函数外的每次循环会使得j的值初始化
    if(x<3&&x>0){
        if(y-x==0){
            printf("此次猜拳两人打成平手!");
        }
        if(y-x==1||x-y==1){
            if(x>y){
                printf("此次猜拳你赢了!加一分!");
                j++;
            }
            else{
                printf("此次猜拳电脑赢了!减一分!");
                j--;
            }

        }
        if(y-x==2||x-y==2){
            if(x>y){
                printf("此次猜拳电脑赢了!减一分!");
                j--;
            }
            else{
                printf("此次猜拳你赢了!加一分!");
                j++;
            }
        }
    }
    else{
    printf("您输入错误!\n");
    }
    return j;//返回值在每次主函数循环中会初始化
}

2.main主体

for(i=0;i<5;i++){
        printf("\n");
        printf("请输入您的出拳!");
        scanf("%d",&x);
        y = rand()%3;
        printf("电脑出拳为:%d\n",y);
        ary[i] = compare(x,y);
        sum += ary[i];//用sum变量很容易解决了计分变量的初始化问题
    }
时间: 2024-10-20 12:29:45

C语言写猜拳游戏中遇到的函数循环小问题的相关文章

如何应用SPRITEKIT的CAMERA实现游戏中的ENDLESS无限循环背景

A Tutorial For How To Use SpriteKit Camera Making Endless Background Player运用Camera节点向前移动的效果 向前舞动 命为SpriteNode为player player的Custom Class 为自定义Node 拖动Camera 进场景中 命名为mainCamera,相机Camera的Position(0,0) ,Zposition为1 设置Scene的Camera为mainCamera camera的节点移动到2

详解 C 语言开发五子棋游戏以及游戏中的重要算法与思路

重拾 C 语言之后发现,原来 C 语言是那么的简洁,对于写小项目来讲,C 语言是那么的合适,然后,博主自己写了一个五子棋游戏,同样是基于博主自己封装的 nkCEngine 代码库编写,其实整个游戏里面大部分代码都用在逻辑处理上了,图形处理以及窗口创建的部分,因为有高度封装的 nkCEngine,基本上可以忽略不计,这篇博文来讲一讲 C 语言开发一个简单的五子棋游戏,这个游戏不包含人机对战的逻辑,所以唯一的难点估计就是在于如何判断下棋的一方在下棋时候是否获胜了,同时博主也会介绍一个游戏开发中最经常

一个用 C 语言写的迷你版 2048 游戏,只有 500个字符

Jay Chan 用 C 语言写的一个迷你版 2048 游戏,只有 487 个字符.来围观吧 M[16],X=16,W,k;main(){T(system("stty cbreak") );puts(W&1?"WIN":"LOSE");}K[]={2,3,1};s(f,d,i ,j,l,P){for(i=4;i--;)for(j=k=l=0;k<4;)j<4?P=M [w(d,i,j++)],W|=P>>11,l*

空闲时间用C语言写了下2048游戏

本身这个游戏逻辑挺简单的,所以,不多说了,直接上代码吧 #include <climits> #include <cstdio> #include <cstring> #include <stack> #include <string> #include <map> #include <vector> #include <cmath> using namespace std; const int MAXX =

尝试用不同语言写简单题的过程中的一些小发现

Python: python2中的sort函数是允许传入cmp函数的 1 def comp(x, y): 2 return x - y 3 a = [3, 2, 1] 4 a.sort(comp) 与我们常用的c++的cmp函数类似 但是python3中取消了cmp函数的支持,sort如下 sorted(iterable,key=None, reverse=False) key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字.默认值为None . 1 def comp

在学会循环结构语句时就可以写的一个猜拳游戏小项目

package com.etc.for2; import java.util.Scanner; /** * 猜拳游戏规则: * 人或机器可以随机出石头.剪刀.布, * 若一方出石头,另一方出剪刀,则输出打印出石头方获胜, * 若一方出石头,另一方出布,则输出打印出布方获胜, * 若一方出布,另一方出剪刀,则输出打印出剪刀方获胜, * */ public class TestCaiQuan { public static void main(String[] args) { Scanner sc=

JS写的一个猜拳游戏

const readline = require("readline-sync"); console.log("欢迎来到猜拳游戏:"); console.log("输入 1 为 剪刀\n输入 2 为石头\n输入 3 为布\n"); //电脑随机 function computer() { let computer = parseInt(Math.random() * 3 + 1); switch (computer) { case 1: cons

C语言应用-飞机游戏

在第一次的C语言程序设计课上我们第一次接触到将近200行程序的大型程序.即使现在已经将这个程序分析的十分清楚,但是每次看到这么多的程序还是令我感到头痛不已. 这个大型的程序是一个基础的飞机类型的游戏.虽然比我们现在手机上.电脑上玩的游戏要简陋不止几百倍而且由于它是利用C语言的循环语句进行输出所以在玩的时候总是在不停地闪烁使人有些头晕.但我还是觉得异常有趣. printf这个函数在这个飞机游戏中用来显示和输出整个游戏.发现printf这个函数不仅仅是用来简单的输出,还可以配合getch()这个函数

漫谈游戏中的人工智能

写在前面   今天我们来谈一下游戏中的人工智能.当然,内容可能不仅仅限于游戏人工智能,还会扩展一些其他的话题. 游戏中的人工智能,其实还是算是游戏开发中有点挑战性的模块,说简单点呢,是状态机,说复杂点呢,是可以帮你打开新世界大门的一把钥匙.有时候看到知乎上一些可能还是前公司同事的同学的一些话,感觉还是挺哭笑不得的,比如这篇:http://zhi.hu/qu1h,吹捧机器学习这种玄学,对游戏开发嗤之以鼻.我只能说,技术不到家.Vision不够,这些想通过换工作可培养不来. 这篇文章其实我挺早就想写