android快速构造一个类额构造方法,Android_开发_day9_类方法构造方法及方法的重载...

Android_开发day9类方法构造方法及方法的重载

目的:

进一步的了解类的使用,以及类方法的使用,和类的创建。

技术:

<1> getxxx setxxx方法:对于一个类来说有私有变量,因此要得到或是改变它的值需要借助一个方法间接改变它的值。对于Android studio来说可以直接使用快捷键alt+insert自动生成代码。

<2> 构造方法:每个类会有一个默认的构造方法,是public 类名(){……},该方法在对象被创建的时候就会被调用。构造方法被调用时对象在内存空间中就已经分配好了。

<3> 方法的重载:同一个类里面有多个同名的方法,但是参数什么的都不一样。因此构造方法是可以重载的。

<4> this:就是明确的指出是该类的成员变量或方法,用于区分参数与成员变量同名时候会用。如果不做区分那就是就近原则,就是默认为作用域小的变量。

<5>static:static修饰的属性和方法都会在对象创建之前优先加载。实例方法:必须创建一个对象才能调用方法。类方法:不需要创建对象直接用这个类来调用方法。什么情况下需要静态方法呢,就是不需要存储数据只关心功能时就可以用静态方法,方便。注意:静态方法不能包含属性和实例方法。静态属性:1.定义一个常量 只赋一次值 2.单例设计模式。

技术如何使用:

延续之前的那个小游戏,实现从生成牌到发牌,到玩家参与游戏,以及游戏内的功能。开始项目前需要进行一下整个游戏结构的分析,如图:

85dda76ea2b8

游戏架构.png

因此我们知道游戏中需要用到的类有人类,扑克类,裁判类,扑克管理器类。因此我们需要依次创建这几个类:

public class Person {

String name;

int money;

Poker poker;

boolean isGiveUp = false;

}

人类,有姓名,钱,持有的牌

public class Poker {

String dots;

String color;

int id;

}

扑克类,有点数,花色,及其id

public class PokerManager {

String[] dots = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

String[] colors = {"♠","♥","♣","♦"};

ArrayList pokers = new ArrayList<>();

public PokerManager(){

initPokers();

}

public void initPokers(){

for (int k = 0; k

for(int i = 0,j = 4*(k+1); i

Poker poker = new Poker();

poker.dots = dots[k];

poker.color = colors[i];

poker.id = j-i;

pokers.add(poker);

}

}

//打乱顺序

Collections.shuffle(pokers);

}

public void showPokers(){

for (Poker poker:pokers) {

System.out.println(poker.color+" "+poker.dots+" "+poker.id);

}

}

}

扑克管理器类,有生成牌的方法,洗牌的方法,还有看牌的方法。

public class PlayerManager {

public static void initPlayers(Person players[]){

for (int i = 0; i

players[i] = new Person();

players[i].name = "御坂"+(i+10031)+"号";

players[i].money = 1000;

}

}

public static void showPlayers(Person players[]){

for (Person person:players){

System.out.println(person.name+" "+person.money+"RMB");

}

}

public static void distributePoker(Person players[]){

PokerManager manager = new PokerManager();

//manager.showPokers();

for (Person player:players) {

player.poker = manager.pokers.get(new Random().nextInt(51));

//System.out.print(player.poker.color+" "+player.poker.dots);

}

}

public static void showPlayerPoker(Person players[]){

for (Person player:players) {

System.out.println(player.name+" "+player.poker.color+player.poker.dots);

}

}

public static void gameStart(Person players[],int basicBet){

int betMoney = 0,bet = 0;

boolean isBet = false;

int choice = 0;

for (Person player:players) {

do {

System.out.println("请" + player.name + "选择操作:");

Utils.showMenu(isBet);

System.out.print("请选择:");

choice = Utils.scanf();

switch (choice) {

case 1:

System.out.println(player.name + " " + player.poker.color + player.poker.dots);

break;

case 2:

System.out.print("请输入下注金额:");

bet = Utils.scanf();

player.money -= bet;

betMoney += bet;

System.out.println(player.name + "下注" + bet + "RMB");

isBet = !isBet;

break;

case 3:

player.money -= bet;

betMoney += bet;

System.out.println(player.name + "跟注" + bet+"RMB");

break;

default:

player.money -= basicBet;

betMoney += basicBet;

player.isGiveUp = true;

System.out.println(player.name + "弃牌");

break;

}

} while (choice == 1);

}

//比大小

Person maxPlayer = new Person();

int max = 0;

for(Person player:players){

if (!player.isGiveUp) {

if (player.poker.id >= max) {

max = player.poker.id;

maxPlayer = player;

}

}

else {

player.isGiveUp = false;

}

}

System.out.println("本局赢家为:"+maxPlayer.name+" "+ maxPlayer.poker.color+maxPlayer.poker.dots);

maxPlayer.money += betMoney;

PlayerManager.showPlayerPoker(players);

PlayerManager.showPlayers(players);

}

}

裁判类就比较复杂了,要为玩家编号,要为玩家发牌,要进行结算等工作。

实际使用效果:

85dda76ea2b8

{9DBCD673-A6CA-4E74-9325-ECC3163C6EF1}.png.jpg

85dda76ea2b8

{364D5868-92C4-4A1D-95D1-A66E7CE32A72}.png.jpg

总结:

在写Java的时候最重要的就是要理清楚有什么东西参与,然后将这些东西写成一个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值