0
点赞
收藏
分享

微信扫一扫

android studio 写剪刀石头布游戏双方都是真人

用Android Studio开发一个双人剪刀石头布游戏

在这篇文章中,我们将探讨如何使用Android Studio开发一个双人模式的剪刀石头布游戏。游戏的核心在于玩家之间的互动,因此我们将重点关注用户界面的设计和游戏逻辑的实现。

游戏概述

剪刀石头布是一项简单但经典的游戏,玩家通过选择剪刀、石头或布来进行对决。游戏规则如下:

  • 剪刀胜布(剪刀切布)
  • 布胜石头(布包石头)
  • 石头胜剪刀(石头砸剪刀)

在双人游戏中,每位玩家将通过界面输入自己的选择,然后系统会决定胜者。

类图设计

我们将使用以下类来实现游戏:

classDiagram
class Player {
    +String name
    +String choice
    +void makeChoice(String choice)
}

class Game {
    +Player player1
    +Player player2
    +String determineWinner()
}

类的解释

  • Player: 表示每一位玩家,包含玩家的名字和选择。
  • Game: 表示游戏本身,包含两个玩家,并有一个方法来决定赢家。

项目结构

在Android Studio中,我们将创建一个新的项目,包含以下结构:

/app
  /src
    /main
      /java
        /com.example.rockpaperscissors
          Player.java
          Game.java
          MainActivity.java
      /res
        /layout
          activity_main.xml

布局文件

首先,我们需要定义用户界面。在 res/layout/activity_main.xml 中,我们可以使用以下XML代码创建一个简单的界面:

<LinearLayout xmlns:android="
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:id="@+id/player1_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Player 1 Name" />

    <Spinner
        android:id="@+id/player1_choice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/choices" />

    <TextView
        android:id="@+id/player2_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Player 2 Name" />

    <Spinner
        android:id="@+id/player2_choice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/choices" />

    <Button
        android:id="@+id/start_game"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Game" />

    <TextView
        android:id="@+id/result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

同时,我们需要在res/values/strings.xml中添加可选项:

<resources>
    <string name="app_name">Rock Paper Scissors</string>
    <string-array name="choices">
        <item>Rock</item>
        <item>Paper</item>
        <item>Scissors</item>
    </string-array>
</resources>

Player.java

在这个类中,我们将实现玩家的选择功能:

public class Player {
    private String name;
    private String choice;

    public Player(String name) {
        this.name = name;
    }

    public void makeChoice(String choice) {
        this.choice = choice;
    }

    public String getName() {
        return name;
    }

    public String getChoice() {
        return choice;
    }
}

Game.java

在这个类中,我们将实现赢家的判断逻辑:

public class Game {
    private Player player1;
    private Player player2;

    public Game(Player player1, Player player2) {
        this.player1 = player1;
        this.player2 = player2;
    }

    public String determineWinner() {
        String choice1 = player1.getChoice();
        String choice2 = player2.getChoice();

        if (choice1.equals(choice2)) {
            return "It's a draw!";
        } else if ((choice1.equals("Rock") && choice2.equals("Scissors")) ||
                   (choice1.equals("Scissors") && choice2.equals("Paper")) ||
                   (choice1.equals("Paper") && choice2.equals("Rock"))) {
            return player1.getName() + " wins!";
        } else {
            return player2.getName() + " wins!";
        }
    }
}

MainActivity.java

最后,在主活动中,我们将整合所有组件,处理用户的输入并显示结果:

public class MainActivity extends AppCompatActivity {
    private EditText player1EditText;
    private EditText player2EditText;
    private Spinner player1ChoiceSpinner;
    private Spinner player2ChoiceSpinner;
    private TextView resultTextView;

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

        player1EditText = findViewById(R.id.player1_name);
        player2EditText = findViewById(R.id.player2_name);
        player1ChoiceSpinner = findViewById(R.id.player1_choice);
        player2ChoiceSpinner = findViewById(R.id.player2_choice);
        resultTextView = findViewById(R.id.result);

        Button startGameButton = findViewById(R.id.start_game);
        startGameButton.setOnClickListener(view -> startGame());
    }

    private void startGame() {
        String player1Name = player1EditText.getText().toString();
        String player2Name = player2EditText.getText().toString();
        String player1Choice = player1ChoiceSpinner.getSelectedItem().toString();
        String player2Choice = player2ChoiceSpinner.getSelectedItem().toString();

        Player player1 = new Player(player1Name);
        player1.makeChoice(player1Choice);
        Player player2 = new Player(player2Name);
        player2.makeChoice(player2Choice);

        Game game = new Game(player1, player2);
        String result = game.determineWinner();
        resultTextView.setText(result);
    }
}

总结

通过上述步骤,我们成功地创建了一个简单的双人剪刀石头布游戏。玩家可以通过简单的用户界面输入自己的名字以及选择。游戏逻辑在 Game 类中实现,使得游戏的胜负判断简单明了。

希望通过这篇文章,您可以对Android Studio中的游戏开发有更深入的理解。下一步,您可以尝试为游戏添加更多的功能,比如计分界面、更复杂的动画效果,或者网络对战等。这将是一个不断学习和调整的过程,希望您能继续探索并创造出更有趣的项目!

举报

相关推荐

0 条评论