亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

用Kotlin語言重寫JAVA入門第三季-簡易撲克牌程序

標簽:
Java Android

项目结构图

项目结构图如上

package PokerGame

/**
 * 卡牌类
 * Created by haivo on 2017-05-21.
 */
class Card(val point : String, val color : String) : Comparable<Card>{

    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<String>("3","4","5","6","7","8","9","10","J","Q","K","A","2")
    val colors = listOf<String>("黑桃","红桃","梅花","方块")
    /**
     * 返回按(点数,花色)有序存放好的一副完整的扑克牌
     */
    fun getPoker() : MutableList<Card>{
        val resultPoker = mutableListOf<Card>()
        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<Card>, count: Int) : MutableList<Card>{
        val result = mutableListOf<Card>()
        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<String>) {
    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 获胜!")
}
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消