ChatGPTをつかってゲームを開発してみようと思います。
〇アンドロイドアプリの作り方は下記参照
StudioR: アンドロイドアプリをつくってみる(その1) (studio-r010101.blogspot.com)
〇まずは ChatGPTを使ってみるところから始めたいと思います。
ChatGPTのログインページ
https://openai.com/blog/chatgpt
1.アカウント作成
・[Try ChatGPT]を選択
・はじめてなので、[Sign up]を選択
・ChatGPTのログインに必要なメールアドレスを登録
・パスワードを入力、[Continue]を選択
入力したメールアドレスにメールが届くので、[Verify email address]を選択
・[login] を選択
・氏名、電話番号を入力
認証コードが届くので受け取れる電話番号を入力
携帯番号の場合、「090-」を、「90」で入力
・認証コードを入力で、アカウント作成は完了
2.ChatGPTをつかってみる
・プロンプトで
「アンドロイドで〇×ゲームをつくりたい。簡単なプログラムをかいてください。」
と入力してみる と 下記の結果が!動くのか?
------------
以下は、簡単な〇×ゲーム(Tic-Tac-Toe)のアンドロイドアプリのプログラム例です。 このプログラムでは、3x3のマス目を表示し、プレイヤーが交互にマス目にマーク(〇または×)を配置します。 プレイヤーが縦・横・斜めのいずれかの方向に3つのマークを並べた場合、そのプレイヤーの勝利となります。
import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button[][] buttons = new Button[3][3]; private boolean isPlayer1Turn = true; // Player 1 -> ○, Player 2 -> × protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialize buttons for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { int buttonId = getResources().getIdentifier("button_" + i + j, "id", getPackageName()); buttons[i][j] = findViewById(buttonId); buttons[i][j].setOnClickListener(this); } } // Reset the game when "Reset" button is clicked Button resetButton = findViewById(R.id.button_reset); resetButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { resetGame(); } }); } public void onClick(View v) { if (!((Button) v).getText().toString().equals("")) { // If the button is already clicked, do nothing return; } if (isPlayer1Turn) { ((Button) v).setText("〇"); } else { ((Button) v).setText("×"); } if (checkForWin()) { String winner = isPlayer1Turn ? "Player 1 (〇)" : "Player 2 (×)"; Toast.makeText(this, winner + " wins!", Toast.LENGTH_SHORT).show(); disableAllButtons(); } else if (checkForDraw()) { Toast.makeText(this, "Draw!", Toast.LENGTH_SHORT).show(); } else { isPlayer1Turn = !isPlayer1Turn; } } private boolean checkForWin() { String[][] field = new String[3][3]; // Get the current state of the buttons for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { field[i][j] = buttons[i][j].getText().toString(); } } // Check rows, columns, and diagonals for winning condition for (int i = 0; i < 3; i++) { if (field[i][0].equals(field[i][1]) && field[i][0].equals(field[i][2]) && !field[i][0].equals("")) { return true; // Row win } if (field[0][i].equals(field[1][i]) && field[0][i].equals(field[2][i]) && !field[0][i].equals("")) { return true; // Column win } } if (field[0][0].equals(field[1][1]) && field[0][0].equals(field[2][2]) && !field[0][0].equals("")) { return true; // Diagonal win (top-left to bottom-right) } if (field[0][2].equals(field[1][1]) && field[0][2].equals(field[2][0]) && !field[0][2].equals("")) { return true; // Diagonal win (top-right to bottom-left) } return false; } private boolean checkForDraw() { // Check if all buttons are filled for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (buttons[i][j].getText().toString().equals("")) { return false; // At least one button is empty } } } return true; // All buttons are filled -> draw } private void disableAllButtons() { // Disable all buttons to prevent further clicks for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { buttons[i][j].setEnabled(false); } } } private void resetGame() { // Reset the game board and enable buttons for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { buttons[i][j].setText(""); buttons[i][j].setEnabled(true); } } isPlayer1Turn = true; } }
このプログラムでは、buttons 配列を使用して 3x3 のボタンを管理し、ボタンがクリックされたときに onClick メソッドが呼び出されます。
各プレイヤーがマークを配置するたびに、勝利条件と引き分けの条件がチェックされます。
勝利または引き分けが検出されると、ゲームがリセットされ、プレイヤーは新しいゲームを始めることができます。