java语言编程扑克牌_用Kotlin语言重写JAVA入门第三季-简易扑克牌程序

AAffA0nNPuCLAAAAAElFTkSuQmCC

项目结构图如上

package PokerGame

/**

* 卡牌类

* Created by haivo on 2017-05-21.

*/

class Card(val point : String, val color : String) : Comparable{

override fun compareTo(other: Card): Int {

//用一副完整的扑克牌作为标准

val tmpPoker = Poker()

//将现有的卡牌放进标准扑克牌的对应位置,然后比较点数

var bigger = tmpPoker.points.indexOf(this.point) - tmpPoker.points.indexOf(other.point)

if (bigger == 0){

//若点数相同,比较花色

bigger = tmpPoker.colors.indexOf(this.color) - tmpPoker.colors.indexOf(other.color)

}

return bigger

}

override fun toString(): String {

return "$color$point"

}

}

package PokerGame

/**

* 扑克牌类

* Created by haivo on 2017-05-21.

*/

class Poker{

val points = listOf("3","4","5","6","7","8","9","10","J","Q","K","A","2")

val colors = listOf("黑桃","红桃","梅花","方块")

/**

* 返回按(点数,花色)有序存放好的一副完整的扑克牌

*/

fun getPoker() : MutableList{

val resultPoker = mutableListOf()

for (color in 1..colors.size)

for (point in 1..points.size){

resultPoker.add(Card(points[point-1],colors[color-1]))

}

return resultPoker

}

}

package PokerGame

import java.util.*

/**

* 玩家类

* Created by haivo on 2017-05-21.

*/

class Player(val id : Int, val names : String){

/**

*连续从给定的牌组cardList取count张牌,返回多张卡牌

*/

fun getCards(cardList : MutableList, count: Int) : MutableList{

val result = mutableListOf()

val random = Random()

for (a in 1..count){

//每次随机从cardList中取一张牌

val randomCard = cardList[(random.nextInt(cardList.size-1))]

result.add(randomCard)

//从cardList中移除这张牌,防止下一次取到相同的牌

cardList.remove(randomCard)

}

return result

}

override fun toString(): String {

return "$id:$names"

}

}

package PokerGame

import java.util.*

/**

* 程序入口,简化了一些输入玩家ID,姓名的操作,只展示最核心的结果

* Created by haivo on 2017-05-21.

*/

fun main(args: Array) {

val mPoker = Poker()

val gameCardList = mPoker.getPoker() //将要被抽取的一组牌

val aPlayer = Player(1, "Jack") //玩家a是ID为1的Jack

val bPlayer = Player(2, "Mike")

val aPlayerCard = aPlayer.getCards(gameCardList,3) //玩家a从gameCardList中连续取3张牌

val bPlayerCard = bPlayer.getCards(gameCardList,3)

Collections.sort(aPlayerCard) //对玩家a的手牌进行排序

//由于重写了Player类的toString方法,所以可以直接$aPlayer的形式调用toString,$aPlayerCard同理

println("玩家$aPlayer 手牌是:$aPlayerCard")

Collections.sort(bPlayerCard)

println("玩家$bPlayer 手牌是:$bPlayerCard")

//将两个人最大的手牌比较

val a = aPlayerCard[2].compareTo(bPlayerCard[2])

if (a > 0)

println("玩家$aPlayer 获胜!")

else

println("玩家$bPlayer 获胜!")

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值