gpt4 book ai didi

java - 在 android 中创建 "Push Up Game"

转载 作者:搜寻专家 更新时间:2023-11-01 08:34:53 24 4
gpt4 key购买 nike

<分区>

我正在尝试在 android sdk 中重新创建俯卧撑纸牌游戏。对于不熟悉的人来说,俯卧撑游戏就是从一副普通扑克牌中抽一张牌,根据花色和点数做一组某种俯卧撑。例如,绘制 5 颗钻石需要您完成 5 颗钻石式(双手并拢)的俯卧撑。套装和对应的俯卧撑类型如下:心形 - 常规钻石 - 钻石俱乐部 - 交错铲 - 宽臂(你可以在这里阅读更多关于游戏的信息:http://www.nexercise.com/2012/12/fitness-game-the-push-up-game/)

我还没有实现扑克牌的图像,所以现在,我只是想让文本正确显示。基本上,一旦应用程序启动,我希望用户能够按下按钮生成一张新卡片,然后该卡片将在屏幕上打印一条消息,说明用户要完成的俯卧撑的数量和类型。

无论如何,这是我目前为止处理过的代码:

public class Card {

public enum Suit {
HEARTS, DIAMONDS, CLUBS, SPADES
}
public enum Rank {
ACE, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, JACK, QUEEN, KING
}
public enum PushUp {
REGULAR, DIAMOND, STAGGERED, WIDEARMED
}

private Suit mSuit;
private Rank mRank;
private PushUp mPushUp;

public Card(Suit mSuit, Rank mRank, PushUp mPushUp) {
this.mSuit = mSuit;
this.mRank = mRank;
this.mPushUp = mPushUp;
}

public Suit getSuit() {
return mSuit;
}

public void setSuit(Suit suit) {
mSuit = suit;
}

public void setRank(Rank rank) {
mRank = rank;
}

public void setPushUp(PushUp pushUp) {
mPushUp = pushUp;
}

public Rank getRank() {
return mRank;
}

public PushUp getPushUpType() {
return mPushUp;
}

@Override
public String toString() {
return "Card:" + mRank.name() + "of" + mSuit.name() + "/n" +
"Complete:" + mRank.name() + "of" + mPushUp.name() + "push ups.";
}

卡片类使用 3 种不同的枚举(花色、排名、俯卧撑类型)来创建卡片对象。该类有一个 toString 方法可以将卡信息转换为字符串。

public class Deck {
private Card[] deck;

public Deck() {
this.deck = new Card[52];
for (int i = 0; i < deck.length; i++)
for (Card.Suit s : Card.Suit.values())
for (Card.PushUp p : Card.PushUp.values())
for (Card.Rank r : Card.Rank.values()) {
Card c = new Card(s, r, p);
this.deck[i] = c;
}
}
public Card pickACard() {
Random randomGenerator = new Random();
int randomNumber = randomGenerator.nextInt(this.deck.length);
Card card = this.deck[randomNumber];
return card;

}
public String setText() {
String text = pickACard().toString();
return text;
}

deck 类创建一个包含所有不同卡片的数组。 deck 类有一个随机抽取卡片的方法和一个从该随机卡片中提取文本的方法。

public class MainActivity extends AppCompatActivity {
private Button mButton;
private TextView mTextView;
private Deck mNewDeck;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mTextView = (TextView) findViewById(R.id.textView);
mButton = (Button) findViewById(R.id.button);

View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = "";
text = mNewDeck.setText();
mTextView.setText(text);

}
};
mButton.setOnClickListener(listener);
}

主 Activity 类是应用程序启动时弹出的主屏幕。它有一个按钮和一个 TextView 。每次按下该按钮时都应生成一张新卡片和新字符串。

当我尝试在模拟器中运行该应用程序时,出现以下错误:

Blockquote

FATAL EXCEPTION: main Process: com.example.aman.pushupgame, PID: 3325 java.lang.NullPointerException: Attempt to invoke virtual >method 'java.lang.String com.example.aman.pushupgame.Deck.setText()' on a null >object reference at com.example.aman.pushupgame.MainActivity$1.onClick(MainActivity.java:29)

目前我最关心的是让代码运行,因为我不确定如何修复这个错误。我对 java 和 android 都很陌生,我正在做这个项目作为一种学习经验,以加强我迄今为止学到的概念。任何帮助深表感谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com