java课程设计纸牌游戏_java练习项目之纸牌游戏实例源码_S币的博客-程序员宅基地

技术标签: java课程设计纸牌游戏  

java应用练习项目之纸牌游戏实例源码。java纸牌项目练习题目要求:

定义纸牌的花色

定义纸牌的大小2A

花色与数字组成一张牌

组成一整副纸牌

构造玩家

发牌

题目 :

创建一副扑克牌,这副牌是标准的包含52张,4种不同花色(方,梅花,红心,黑桃),上面的数字是2到ACE(14|A)的牌。

要求:

1.打乱这副牌

2.发牌给四个玩家.

请通过代码实现这个要求,如果不怎么熟悉Java/C/C++相关的Api的话,可以用伪代码来完成.

1.定义纸牌的花色

//CardsType.java

public class CardsType {

//定义牌的花色

private static final String[] ct = {

”黑桃”,

”红桃”,

”梅花”,

”方块”

};

//获取纸牌的花色

public static String getType(int i){

return ct[i];

}

//判断是否是纸牌成员

private static int find(String s){

int i=-1;

//遍历数组ct的每一个成员

for(String st:ct ){

i++;

if(st.equals(s))

return i;

}

return i;

}

//比较两张纸牌花色是否相同

public static int com(String s, String c){

int s1 = find(s);

int s2 = find(c);

if(s1 == -1)

return 100;

if(s2 == -1)

return -100;

return s2-s1;

}

}

2. 定义纸牌的大小(2——A)

//Num.java

public class Num {

//定义纸牌的号码

private static final String[] n = {

”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”10″,”J”,”Q”,”K”,”A”

};

//获得纸牌大小

public static String getN(int i){

if(i<0||i>13)

return null;

return n[i];

}

}

3.  花色与数字组成一张牌

//Cards.java

public class Cards {

private String type;

private int num;

// 构造函数

public Cards() {

}

public Cards(String s, int n) {

this.type = s;

this.num = n;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public boolean equals(Object o) {

if (!(o instanceof Cards))

return false;

Cards c = (Cards) o;

if (this.num == c.getNum() && this.type.equals(c.getType()))

return true;

return false;

}

public int compareTo1(Object o) {

if (!(o instanceof Cards))

return 1;

Cards c = (Cards) o;

int bjjg;

if ((bjjg = CardsType.com(this.type, c.getType())) != 0)

return bjjg;

return c.getNum() – this.num;

}

public String toString() {

return type + ” : ” + Num.getN(num);

}

}

4. 组成一整副纸牌//Pck.java

public class Pck {

public static Cards[] getNewCards() {

Cards[] nc = new Cards[52];

int k = 0;

for (int i = 0; i < 4; i++) {

String t = CardsType.getType(i);

for (int j = 0; j < 13; j++) {

nc[k++] = new Cards(t, j);

}

}

return nc;

}

}

5.  构造玩家

//Player.java

public class Player {

private Cards[] mCards;

public Cards[] getmCards() {

return mCards;

}

public void setmCards(Cards[] mCards) {

this.mCards = mCards;

}

public Player(Cards[] mCards){

this.mCards = mCards;

}

@Override

public String toString() {

String result;

result = “Player [my card is: \n";

for (int i = 0; i < mCards.length; i++) {

result = result + mCards[i].toString() + “\n”;

}

result = result + “]”;

return result;

}

}

6.  发牌

//Game.java

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

public class Game {

private Cards[] gc = new Cards[52];

private int[] num = new int[52];

public Game() {

int i = 0;

for (Cards c : Pck.getNewCards()) {

System.out.println(“index: ” + i + “==>card: ” + c.toString() + “”);

gc[i++] = c;

}

for (int j = 0; j < 13; j++)

num[j] = j;

}

// 发牌

public Player[] fp() {

Player[] players = new Player[4];

List wordList = Arrays.asList(gc);

for (int i = 0; i < wordList.size(); i++) {

System.out.println(“wordList.index: ” + i + “==>card: ”

+ wordList.get(i));

}

Collections.shuffle(wordList);

for (int i = 0; i < wordList.size(); i++) {

System.out.println(“wordList.index: ” + i + “==>card: ”

+ wordList.get(i));

}

int k = 0;

for (int i = 0; i < 4; i++) {

Cards[] card = new Cards[13];

for (int j = 0; j < 13; j++) {

card[j] = wordList.get(k);

k++;

}

players[i] = new Player(card);

}

return players;

}

public static void main(String[] args) {

Game g = new Game();

Player[] pf = g.fp();

for (int i = 0; i < pf.length; i++) {

System.out.println(pf[i].toString());

}

}

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36407172/article/details/114850789

智能推荐

不再依赖A*,利用C++编写全新寻路算法_weixin_30555515的博客-程序员宅基地

一,说在前面的话大概在半年前,看见一到信息竞赛题:在任意方格阵中设置障碍物,确定起始点后,求这两点之间路径。当时觉得蛮有意思的,但是没有时间去做,今天花了两个小时来实现它。据说有一个更高级的寻路算法叫做a*, 那我就把我的算法叫做W*。这个算法主要用于解迷宫和实现战棋游戏(SLG)的寻路。首先讲一讲我的算法的思路:我们先确定起始点,然后从起点出发,按一定顺序判断这个位置上下...

API cloud的基本用法_qq_41619567的博客-程序员宅基地

api cloud在新创建一个项目后如果需要真机预览 首先先配置好IP和端口然后运行 找到要运行的页面然后右键 wifi实时预览 同时开发studio2上 控制台会打印log尽量使用真机预览,开发工具上实时预览效果显示有问题。基本用法是结合api的原生工具 和 $api的js封装方法(类似jq)来控制原生组件的实现 页面的配置以及所需数据的格式按照文档给的格式写页面开始时...

pki的java实现书籍_精通PKI网络安全认证技术与编程实现 PDF扫描版[214MB]_weixin_39906521的博客-程序员宅基地

精通PKI网络安全认证技术与编程实现从实战出发,介绍了PKI应用开发过程和细节。《精通PKI网络安全认证技术与编程实现》共32章,分6篇,主要内容包括PKI基础知识、OpenSSL开发、CrytoAPI开发、JavaSecurity开发、电子商务网站应用、PKI技术应用等,涉及C语言、Java语言、JSP、ASP/ASP.NET、PHP等开发语言。为了方便读者深入了解PKI,《精通PKI网络安全认...

java的几种排序方式_菜鸟园管理者的博客-程序员宅基地

java常用排序方式java中的排序就是通过实现Comparator接口完成的拿奥运会奖牌榜为例定义beanclass Country implements Comparable&lt;Country&gt;{ // 国家名字 private String name; // 金牌数 private Integer a; // 银牌数 private Integer b; // 铜牌数

springboot文件下载demo_慢熱乖友的博客-程序员宅基地

springboot文件下载小demo一、准备前端页面链接&lt;a href="../file/download?fileName=xxxx.xxx"&gt;xxx.xxx&lt;/a&gt;二、编写[email protected]("/download")//注意返回值是void,不能响应跳转页面和响应流,只能二选一public void download(String fileName, HttpServletRequest request, HttpServletRe

微信小程序----------------------自定义遮罩层_赵云0726的博客-程序员宅基地

本文转自:微信小程序中遮罩层的实现uni-app自定义弹窗,底部页面触摸穿透问题解决方案(精华)移动端开发遮罩层(弹窗)防止滚动穿透完美解决方案先把自己用到的方法记录下来wxml代码&lt;view class="wrap"&gt; &lt;!---------------------------------------------------------------------------------1 --&gt; &lt;!--页面内容区 --&gt; &lt;

随便推点

【寒假】HDU 2068(错排公式)_好耶!!的博客-程序员宅基地

今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁。RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿,G是月野兔;第二次猜:R是草儿,P是月野兔,G是公主;第三次猜:R是草儿,P是公主,G是月野兔;…可怜的野骆驼第六次终于把RPG分清楚了。由于RPG的带动,做ACM的女生越来越多,我们的野骆驼想都知道她们,可现在有N多人,...

fpga学习——zynq图像处理中的DVP流接口封装_老王学FPGA的博客-程序员宅基地

之前文章介绍了基于zynq的图像处理架构问题。其中,作为开发者,需要重点关注图像传感器接口、处理算法、显示接口,这些模块。现在我们一同学习用于视频数据接口的DVP模块,并将其封装成AXI-stream接口便于直接和VDMA IP通信。DVP_AXI stream IP v1.0使用说明1.设计概述•用于cmos传感器视频数据采集,将cmos输出的8位视频数据拼接成RGB 565模式•AXI_stream主机接口,用于和PS端内存的数据交互•基于vivado 18.3软件设计2.模块分析

Pycharm 模板代码设置_zgyu的博客-程序员宅基地

perl 语言#!/usr/bin/perl#[email protected] 2018.8.9 v1#lncR cis actinguse strict;use Getopt::Long;my \$chrLen;my(\$down) = (10000);my \$help;GetOptions( 'chrLen=s' =&gt; \\\$chrLen , 'down=i' =&gt; \\\$down , 'help|h!' =&gt;

自己总结的常用Windows命令_weixin_33720956的博客-程序员宅基地

ipconfig /flushdns 刷新DNSdxdiag 查看系统硬件信息compmgmt.msc 计算机管理diskmgmt.msc 磁盘管理devmgmt.msc 设备管理器 hdwwiz.cplmsconfig 系统配置实用程序controlr ...

C#序列化和反序列化 - 深度剖析_bruce135lee的博客-程序员宅基地_c#序列化与反序列化

C#序列化和反序列化程序都是基于工厂模式下的,那么C#序列化和反序列化到底有什么不同之处么?那么本文就向你详细介绍C#序列化和反序列化程序的区别及其应用。    C#序列化和反序列化,两者的程序处理方式基本一致,都是基于工厂模式的,所谓C#序列化就是是将对象转换为容易传输的格式的过程,一般情况下转化打流文件,放入内存或者IO文件中。例如,可以序列化一个对象,然后使用 HTTP 通过 Interne...