关于砸金花的OOP编程

问题描述

packageday1Today5;importjava.util.Scanner;/**4,砸金花游戏(控制台版本)*描述:编写程序实现砸金花的扑克游戏,程序允许用户和电脑对玩,*程序开始时要求用户输入总赌本,电脑和玩家的赌本一样多。*每次开局前,提示用户输入本次赌注,并在一副牌中随机发两手牌(去掉大小王),*每手牌三张,然后比较这两手牌的大小,若A比B大,则用户赢得赌注,*反之,则输掉赌注,直到有一方(用户或电脑)的赌注为0,则退出游戏。*每手牌的大小比较规则:*1)三条>同花顺>同花>顺子>对子>单张*2)处于同一级别的两手牌比较最大的一张牌的大小*3)若两手牌同为对子,则应比较成对的那张牌的大小*///本题有两个方法特别重要,打印出牌面的方法printpai(),比牌的大小的方法compara()publicclassCardGame{staticintuserMoney=0;staticintcomputerMoney=0;staticint[]handcards=newint[6];publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println("请输入赌本:");userMoney=sc.nextInt();computerMoney=userMoney;while(userMoney>0&&computerMoney>0){System.out.println("请输入本局赌注:");intduzhu=sc.nextInt();if(duzhu<=0||duzhu>userMoney||duzhu>computerMoney){System.out.println("赌注不正确,请重新输入:");continue;}printpai();System.out.println();if(compara()>0){System.out.println("玩家获胜!");userMoney+=duzhu;computerMoney-=duzhu;}elseif(compara()<0){System.out.println("电脑获胜!");userMoney-=duzhu;computerMoney+=duzhu;}else{System.out.println("平局!");}System.out.println("玩家赌本为:"+userMoney+"电脑赌本为:"+computerMoney);}}publicstaticvoidprintpai(){for(intj=0;j<handcards.length;j++){inthuase=(int)(Math.random()*4+1);intpaimian=(int)(Math.random()*13+2);handcards[j]=(huase*100+paimian);switch(huase){case1:System.out.print("黑桃");break;case2:System.out.print("红桃");break;case3:System.out.print("梅花");break;case4:System.out.print("方块");break;}if(handcards[j]%100<=10){System.out.print(handcards[j]%100+"");}else{switch(handcards[j]%10){case1:System.out.print("J");break;case2:System.out.print("Q");break;case3:System.out.print("K");break;case4:System.out.print("A");break;}}}}//比较两手牌时不能用数字的大小sum+(handcards[j]=(huase*100+paimian))//的加以判断,那样判断的结果会令黑桃A<小于梅花8,红桃9>黑桃Q的情况,不符合现实publicstaticintcompara(){int[]userCard=newint[handcards.length/2];int[]computerCard=newint[handcards.length/2];//打印数字类型的牌面值,数组//System.out.println(Arrays.toString(handcards));//定义玩家的牌,取数组元素的前三个for(inti=0;i<userCard.length;i++){userCard[i]=handcards[i];}//定义电脑的牌,取数组元素的后三个for(inti=handcards.length/2;i<handcards.length;i++){computerCard[i-handcards.length/2]=handcards[i];}//比较两玩家的牌的大小值returnfromCardToNumber(userCard)-fromCardToNumber(computerCard);}publicstaticintfromCardToNumber(int[]temp){//下面是一段冒泡排序for(inti=0;i<temp.length;i++){//比牌面值的大小,即现实中红桃5(代表205)永远是比黑桃(K113)要小的,对牌的大小顺序进行排序for(intj=0;j<temp.length-i-1;j++){if(temp[j]%100<temp[j+1]%100){inttmp=temp[j];temp[j]=temp[j+1];temp[j+1]=tmp;}}//输出冒泡排序的两组数字,前面一半的数组值代表玩家的,后一半的数组值代表式电脑的//System.out.print(temp[i]+"");}//System.out.println();intnum=0;//判断三条的情况if(temp[0]%100==temp[1]%100&&temp[1]%100==temp[2]%100){num=6*1000000+temp[0]%100*10000+temp[1]%100*100+temp[2]%100;}elseif(temp[0]/100==temp[1]/100&&temp[1]/100==temp[2]/100&&temp[0]%100==temp[1]%100+1&&temp[1]%100==temp[2]%100+1){num=5*1000000+temp[0]%100*10000+temp[1]%100*100+temp[2]%100;}elseif(temp[0]/100==temp[1]/100&&temp[1]/100==temp[2]/100){num=4*1000000+temp[0]%100*10000+temp[1]%100*100+temp[2]%100;}elseif(temp[0]%100==temp[1]%100+1&&temp[1]%100==temp[2]%100+1){num=3*1000000+temp[0]%100*10000+temp[1]%100*100+temp[2]%100;//数组是从大到小排列的,因此在比较时要注意}elseif(temp[0]%100==temp[1]%100||temp[1]%100==temp[2]%100){num=2*1000000+temp[0]%100*10000+temp[1]%100*100+temp[2]%100;}else{num=1*1000000+temp[0]%100*10000+temp[1]%100*100+temp[2]%100;}returnnum;}}--------------------------------------------------------------------------------------------------------------/**用面向对象的方式重写扑克牌游戏程序,定义以下类型:1,花色,枚举类型,包含枚举值:黑,红,梅,方。2,点数,枚举类型,包含枚举值:2-A3,一张扑克牌(Card):包含属性:花色,点数4,一手扑克牌(OneHandCards):包含属性:Card[]cards;//三张扑克牌方法:publicintcompareTo(OneHandCardsc);该方法返回某两手扑克牌大小比较的结果:如果当前这手牌比c大,则返回>0的值如果当前这手牌比c小,则返回<0的值如果当前这手牌和c相等,则返回05,玩家类(Player):包含属性:姓名,赌本,当前一手牌6,游戏类(Game):包含属性:两个玩家包含方法:void发牌();为该游戏中的所有玩家发牌。voidstartGame();开始游戏。*/

解决方案

解决方案二:
该回复于2010-12-23 09:13:56被版主删除
解决方案三:
该回复于2010-12-23 09:48:33被版主删除
解决方案四:
你想让我们写吗?

时间: 2024-09-11 11:45:34

关于砸金花的OOP编程的相关文章

对Js OOP编程 创建对象的一些全面理解_基础知识

面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 对象的含义 对象可以是汽车,人,动物,文字,表单或者任何存在的事物等等. 对象有: 属性-------对象的某些特定的性质. 方法-------对象能做的事情. 事件-------能响应发生在对象上的事情. 我们可以通过创建一个人的对象来理解面向对象 人: 两只手,两只脚,一个头,还可以跑动. 手,脚,头,是人的属性,跑动是人的方法. 首先,我们来用最简单的方法创建一个对象 var person = { head

Lua下通过元表模拟OOP编程,继承多态

Lua本身是没有以明确的定义来支持OOP编程的,但是我们却可以通过Lua内核提供的一些特性来间接实现简单的面向对象的编程.  通过Lua中的 table结构  metatable 以及函数可以配合实现OOP,以及继承.这些说白了都是一种伪实现,不建议在Lua下使用多重继承 . 在LUA中你想要 强制实现OOP 你必须需要懂一下几个关键词!! 什么是语法糖? 语法糖即糖衣语法,C/C++升级过程中的面向对象 整体就是一种语法糖 ,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin

PHP面向对象(OOP)编程:“$this”的特殊用法

现在我们知道了如何访问对象中的成员,是通过"对象->成员"的方式访问的,这是在对象的外部去访问对象中成员的形式, 那么如果我想在对象的内部,让对象里的方法访问本对象的属性, 或是对象中的方法去调用本对象的其它方法这时我们怎么办?因为对象里面的所有的成员都要用对象来调用,包括对象的内部成员之间的调用,所以在PHP里面给 我提供了一个本对象的引用$this, 每个对象里面都有一个对象的引用$this来代表这个对象,完成对象内部成员的调用, this的本意就是"这个"

PHP5 OOP编程中的代理与异常定制

php5|编程 以前没学过PHP,最近刚好一个项目需要用到,我就决定一边学一边做PHP. 1 在SQL语句中可通过添加限制条件:left(text,20)只取text文本的前20个字; 2 可以用limit fromRecord, RecordNum 来作为分页使用,比如limit 0,30表示从第一个记录开始遍历30个纪录; 3 两个表的连接可以是:table1 join table2 using x(x为两个表的公共字段),或者是table1 join table2 on table1.x

PHP5 OOP编程之代理与定制异常

一. DBQuery对象 现在,我们的DBQuery对象简单地模仿一个存储过程-一旦被执行,即返回一个必须进行保存的结果资源:并且如果你想使用该结果集上的函数(例如num_rows()或fetch_row())的话,你必须传递MySqlDB对象.那么,如果由DBQuery对象来实现MySqlDB对象(其设计目的是对一个执行查询的结果进行操作)实现的函数,效果如何呢?让我们继续使用上一篇示例中的代码:并且让我们假定,现在由DBQuery对象管理我们的结果资源.DBQuery类的源码如列表1所示.

PHP面向对象(OOP)编程入门教程————如何实例化对象?

我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了. 当定义好类后,我们使用new关键字来生成一个对象. $对象名称 = new 类名称(); <?php class Person { //下面是人的成员属性 var $name; //人的名字 var $sex; //人的性别 var $age; //人的年龄 //下面是人的成员方法 function say() { //这个人可以说话的方法 echo "这个人在说话&quo

PHP面向对象(OOP)编程:this的特殊用法

或是对象中的方法去调用本对象的其它方法这时我们怎么办?因为对象里面的所有的成员都要用对象来调用,包括对象的内部成员之间的调用,所以在PHP里面给 我提供了一个本对象的引用$this, 每个对象里面都有一个对象的引用$this来代表这个对象,完成对象内部成员的调用, this的本意就是"这个"的意思, 上面的实例里面,我们实例化三个实例对象$P1. $P2. $P3,这三个对象里面各自存在一个$this分别代表对象$p1.$p2.$p3 . 通过上图我们可以看到,$this就是对象内部代

Javascript oop设计模式 面向对象编程简单实例介绍_javascript技巧

Javascript oop设计模式 面向对象编程 最初我们写js代码的时候是这么写 function checkName(){ //验证姓名 } function checkEmail(){ //验证邮箱 } function checkPassword(){ //验证密码 } 这种方式会造成全局变量的严重污染,再过渡到 var checkObject = { checkName : function(){}; checkEmail: function(){}; checkPassword:

避免OOP的形式,POP的思想

避免OOP的形式,POP的思想 好久没发技术性文章了,今天在21PHP里看到有位兄弟发了这贴子,转了过来.对加强OOP的学习有些用 ----------------------------------------------------------避免OOP的形式,POP的思想随着PHP对OOP(面向对象编程)支持的增强以及程序设计思想的发展,越来越多的PHP程序员走进了OOP的世界.通过简单的学习,大多数程序员都能 快速的掌握OOP编程的基本技能.程序员们所写的代码里class,new等字符串