Andriod应用与游戏开发(纸牌小游戏)实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Andriod应用与游戏开发

——纸牌小游戏实例

这是胡老师给的纸牌小游戏,我用eclipse载入solitaire项目,再选择andriod运行方式运行这个项目,自动启动andriod模拟器之后,这个游戏就运行起来了。不知道为什么游戏在andriod模拟器上运行时是倒着的,不过还是可以玩的。

这是正宗的电脑上的纸牌小游戏,可见使用java编写的纸牌游戏仿真度也是很高的。

由于是在andriod模拟器上运行,对于我那个配置不高的本本电脑,光运行模拟器就卡个半死,运行这游戏卡到无语可想而知,

上图中的梅花6在移动时都可以停在红桃7下面半天,使我已经没有在模拟器上玩它的欲望了。。。

不说废话了直接进入正题,来看看编写此游戏的java代码。

首先我们看看src文件夹下的各个类

对此介绍一下各个类,因为我自己也对这些类不太熟悉,肯定会有一些错误的地方,所以仅供参考。

AnimateCard类负责驱动游戏,连接其他类别。

Card类是纸牌操作类,包括各种操作方法。

CardAnchor类则与普遍的cardmain类一样是纸牌操作的具体步骤。

Deck类顾名思义是桌面。

Move类与movecard类都讲述了具体的鼠标移动纸牌的事件。Options类规定了各个界面的布局。

Replay类是重新开始游戏。

Rules类是纸牌游戏的具体规则,反正我是看不懂。

Solitaire类以及stats类的确不知道是什么类。

还是看看其中规则的实现代码吧

public class Card extends JLabel implements MouseListener, MouseMotionListener { public Point point, oldPoint;// point是初始鼠标位置

CardMain m = null;

public String name;// 卡片名称1-1

public String up = "rear";// 默认反面

public int currentCol = 0;

public boolean canmove = false;// 判断当前卡片是否可以拖拽

public Card(CardMain m) {

this.m = m;

this.setSize(71, 96);

this.setVisible(true);

this.addMouseListener(this);

this.addMouseMotionListener(this);

}

public Card(CardMain m, String name, String flag) {

this.m = m;

= name;

if (flag == "front")

this.turnFront();

else {

this.turnRear();

}

this.setSize(71, 96);

this.setVisible(true);

this.addMouseListener(this);

this.addMouseMotionListener(this);

}

public Card getNext(Point point) {

Card card = null;

point.y += m.min;

card = (Card) m.table.get(point);

if (card != null)

return card;

point.y += m.max - m.min;

card = (Card) m.table.get(point);

return card;

}

public void moveto(Point from, Point to) {

Point to2 = new Point();

to2 = to;

Card card = this.getNext(from);

m.table.remove(from);

this.setLocation(to2);

m.table.put(to2, this);

if (card != null)

card.moveto(card.getLocation(), new Point(to2.x, to2.y + m.max));// 递归

}

public void moving(int x, int y) // 拖拽事件

{

for(Card card:m.dragList)

{

Point p = card.getLocation();

m.table.remove(p);

p.x += x;

p.y += y;

card.setLocation(p);

m.container.setComponentZOrder(card, 0);

m.table.put(p, card);

}

//Card card = this.getNext(this.getLocation());

// 解决某个bug

// if(this.getCol()==currentCol)

// System.out.println(this.getCol()+":"+currentCol);

//Point p = this.getLocation();

/*m.table.remove(p);

p.x += x;

p.y += y;

this.setLocation(p);

m.container.setComponentZOrder(this, 0);

m.table.put(p, this);

if (card != null)

card.moving(x, y);// 递归*/

}

相关文档
最新文档