一个扑克牌游戏的模拟

每人8张牌,每次抽两张,三个玩家和庄家依次比较,

对子比非对子大,对王最大,依次KQJ 10 9 8```2 A

非对子时,求和,只考虑个位数

分步骤模拟容易不清楚,同时庞杂的变量再次证明可读性多么重要

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define JU 100000
#define QIAN 5000
int main() {

	int ju,win=0,sum=0,lose=0;
	srand(time(NULL));//以时间为种子
	for(ju=1; ju<=JU; ju++) {//局数
		int b[54]= {14,14,
		            1,2,3,4,5,6,7,8,9,10,11,12,13,
		            1,2,3,4,5,6,7,8,9,10,11,12,13,
		            1,2,3,4,5,6,7,8,9,10,11,12,13,
		            1,2,3,4,5,6,7,8,9,10,11,12,13,
		           };//初始化牌
		int player[4][8]= {0}; //初始化玩家
		int playering[4][2]= {0}; //初始化玩家要比较的牌
		int money[4]= {QIAN,QIAN,QIAN,QIAN}; // 初始化钱
		int flag=0,i,j,k,num,m,ci,p1,p2,x,temp,num1,num2;

		for(ci=0; flag==0; ci++) {//次数,直至一个玩家输光
			for(j=0; j<=53; j++) {//洗牌
				x=rand()%54;
				temp=b[x];
				b[x]=b[j];
				b[j]=temp;
			}
			for(j=0; j<=3; j++) { //发牌
				for(k=0; k<=7; k++) {
					player[j][k]=b[j*8+k];
				}
			}
			for(j=0; j<=3; j++) { //每次玩牌的内部的轮数
				for(k=0; k<=3; k++) { //抽出两张牌放在比较区
					playering[k][0]=player[k][8-2*j-1];
					playering[k][1]=player[k][8-2*j-2];

				}
				for(k=1; k<=3; k++) {
					if(playering[k][0]==playering[k][2]&&playering[0][0]==playering[0][1]) { //庄家和玩家都是对
						if(playering[0][0]>=playering[k][0]) {
							money[0]+=10;
							money[k]-=10;
						} else {
							money[0]-=10;
							money[k]+=10;
						}

					} else if(playering[k][0]==playering[k][1]) {
						money[0]-=10;
						money[k]+=10;
					} else if(playering[0][0]==playering[0][1]) {
						money[0]+=10;
						money[k]-=10;
					} else {
						if(playering[0][0]>10)//初始化jqk小王大王
							playering[0][0]=1;
						if(playering[0][1]>10)
							playering[0][1]=1;
						if(playering[k][0]>10)
							playering[k][0]=1;
						if(playering[k][1]>10)
							playering[k][1]=1;
						p1= playering[0][0]+playering[0][1];
						if(p1>10)
							p1%=10;
						p2= playering[k][0]+playering[k][1];
						if(p2>10)
							p2%=10;
						if(p1>p2) {
							money[0]+=10;
							money[k]-=10;
						} else {
							money[0]-=10;
							money[k]+=10;
						}
					}
				}
			}
			for(j=0; j<=3; j++) { //判断是否钱为零
				if(money[j]<=0) {
					flag=1;
				}
			}
		}
	//	printf("第%d局,庄家:%d,玩家1:%d,玩家2:%d,玩家3:%d\n",ju,money[0],money[1],money[2],money[3]);
		if(money[0]>QIAN)
			win++;
		if(money[0]<=0)
			lose++;
			sum+=money[0];
	}
	printf("%d\n",win);
	printf("%d\n",lose);
	printf("%d",sum/JU);
}
时间: 2024-08-06 07:54:34

一个扑克牌游戏的模拟的相关文章

Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

提要 此篇是一个国外教程的翻译,虽然有点老,但是适合新手入门.自己去写代码,debug,布置场景,可以收获到很多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一篇中,我们学会了怎么在Unity中搭建游戏的场景,并且设置模型的物理属性. 在第二篇中,我们学会了怎么在unity中使用脚本,并且创建了大部分的游戏逻辑,包括投球和得分! 在这最后一节中,我们将会为用户创建一个菜单系统,并且和GameController进行交互,我们开始吧. 在设备上测试 到目前为止,

扑克牌游戏研究先告一段落

该扑克牌游戏是别人写的程序,它是基于局域网写的,我本来计划是将其改写为一个服务器版本,但是实在是没有精力去研究,就先告一段落. 该扑克牌实现的功能点: C#.网络编程,WinForm 1)单冲牌,3个玩家: 2)局域网内三个玩家玩: 3)界面也简单,但是扑克牌的基本功能都实现了:洗牌.发牌.牌组.得分等. 十分值得研究的一个棋牌程序,原作者:http://www.cnblogs.com/DreamCreator/tag/%E6%96%97%E5%9C%B0%E4%B8%BB/ 链接:http:/

【题解】扑克牌游戏

[题解]扑克牌游戏 假如我们知道一个答案,那么我们剩下的问题就是去检查这个答案是否合法. 显然可以拿\(m\)做文章,假设我们最终可以得到\(ans\)组套牌,那么对于每张牌,如果它的数量比\(ans\)小,我们就需要拿\(joker\)补.多的就没关系了. 很棒的思路,还有一个贪心做法,也很神仙.orz #include<bits/stdc++.h> #define R register int #define gc getchar using namespace std; typedef

本人第一个android游戏《新连连看》上架

经过艰苦奋战了几天,本人的第一个android游戏<新连连看>最终完毕了第一个版本号,比較简陋.另一部分功能保留没有开放.等第二个版本号再上.用的libgdx框架.可能不是非常出名,可是本人认为真的是非常好用的. 希望大家先去玩一下,然后给我提一些改进的意见.稍后我会进行改进.并在完好后发布源代码供讨论.批评. 传送门:http://app.lenovo.com/app/14452187.html ------------------------------------------------

Eclipse SWT开发教程以及一个连连看游戏的代码实现下载

原创整理不易,转载请标明出处:Eclipse SWT开发教程以及一个连连看游戏的代码实现下载 代码下载地址:http://www.zuidaima.com/share/1772672482675712.htm 我在前面讲过:如果讲GUI编程一味只讲各个控件的使用方法,那么纯粹是浪费大家时间,如果出书,那绝对是骗钱的.所以我并不会详细地讲解SWT各个控件的具体使用方法.然而的众所周知,Eclipse的UI界面是建立在SWT基础之上的,如果一字不提SWT,似乎也不大可能.SWT是一个优秀的GUI编程

用javascript实现一个2048游戏

早就想自己写一个2048游戏了,昨晚闲着没事,终于写了一个如下图,按方向键开始玩吧.如果觉得操作不方便,请直接打开链接玩吧:http://gujianbo.1kapp.com/2048/2048.html 附上源代码链接:https://github.com/gujianbo/js2048 个人博客地址:http://gujianbo.1kapp.com/ 新浪微博:http://weibo.com/gujianbobo 欢迎读者交流讨论并提出宝贵意见. 用javascript实现一个2048游

小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和

小易邀请你玩一个数字游戏,小易给你一系列的整数.你们俩使用这些整数玩游戏.每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字. 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和的数字中的最小数. 输入描述: 输入第一行为数字个数n (n ≤ 20) 第二行为n个数xi (1

famo.us 一个JavaScript游戏引擎初探

好久之前就看到了famo.us的优良特性,尤其是它避开浏览器弊病的跳跃思维,再加上自己使用JQM来开发Web App时的页面切换的白屏bug,又比对了sencha touch,最后还是决定将famo.us作为开发框架,它是基于浏览器的,目标就是使页面呈现性能最大化,而我不会拿它来做游戏,只是做简单的WebApp,要的就是这个界面显示性能. 但悲剧的是国内没有关于famo.us的教程,近些日子Google被天朝打压的挺惨,幸运的是famo.us官网还是可以访问的,所以以下的学习结果都来自官网htt

JavaScript写一个拼图游戏

拼图游戏的代码400行, 有点多了, 在线DEMO的地址是:打开: 因为使用canvas,所以某些浏览器是不支持的: you know: 为什么要用canvas(⊙o⊙)?  因为图片是一整张jpg或者png, 我们要用把图片导入到canvas画布, 然后再调用上下文context的getImageData方法, 把图片处理成小图, 这些小图就作为拼图的基本单位: 如何判断游戏是否结束, 或者说如何判断用户拼成的大图是正确的? 我们就要在刚刚生成的小图上面添加自定义属性, 后期在小图被移动后再一