gpt4 book ai didi

java - 将控制台代码转换为 JOptionPane

转载 作者:行者123 更新时间:2023-11-30 06:58:31 26 4
gpt4 key购买 nike

我被要求创建一个我选择的星球大战主题游戏,该游戏必须使用 JOptionPane 而不是控制台来玩。我很好地设置了主菜单和基本内容,但其余的我不知道该怎么做。

我的游戏是战舰游戏,到目前为止它可以在控制台中运行,但是我不知道如何进行网格工作。游戏必须以电影中的 BB-8 角色为主角。我的代码在这里:

import java.util.*;
import javax.swing.*;
public class BattleShips {

public static void main(String[] args) {

Scanner a = new Scanner (System.in);
System.out.print("Welcome To Battleships!\n\nSelect One Of The Following Options:\n\n1. Play\n2. How To Play\n3. Exit\n\n");
String choice = a.nextLine();
if(choice.equals("2")){
System.out.print("\nThe rules of battleships are simple."
+ "\n\n- Your aim is to destroy all enemy ships, the first to destoy all opposing ships first wins."
+ "\n- You will have 4 ships all of which are 3 spaces long."
+ "\n- You will have the choice of placing your ships anywhere you wish, "
+ "simply by deciding if you want it vertical or horizontal and entering the centre coordinate."
+ "\n- You will then have to guess where the enemy ships are and enter the coordinates, "
+ "if you hit the enemy ships you will recieve points."
+ "\n- If your ships are hit, you will lose a point.");
}
String[][] table = new String[7][7];
String[] letter = {"A","B","C","D","E","F"};
String[] numbers = {"0","1","2","3","4","5"};
table[0][0] = " ";
for(int i = 1 ;i < 7 ;i++){
table[i][0] = (letter[i-1]);
for(int j = 1 ;j < 7 ;j++){
table[0][j] = (numbers[j-1]);
}
}
for(int i = 1 ;i < 7 ;i++){
for(int j = 1 ;j < 7 ;j++){
table[i][j] = "~";
}
}
String[][] hmtable = new String[7][7];
String[] hmletter = {"A","B","C","D","E","F"};
String[] hmnumbers = {"0","1","2","3","4","5"};
hmtable[0][0] = " ";
for(int i = 1 ;i < 7 ;i++){
hmtable[i][0] = (hmletter[i-1]);
for(int j = 1 ;j < 7 ;j++){
hmtable[0][j] = (hmnumbers[j-1]);
}
}
for(int i = 1 ;i < 7 ;i++){
for(int j = 1 ;j < 7 ;j++){
hmtable[i][j] = "~";
}
}
String[][] table2 = new String[7][7];
String[] letter2 = {"A","B","C","D","E","F"};
String[] numbers2 = {"0","1","2","3","4","5"};
table2[0][0] = " ";
for(int i = 1 ;i < 7 ;i++){
table2[i][0] = (letter2[i-1]);
for(int j = 1 ;j < 7 ;j++){
table2[0][j] = (numbers2[j-1]);
}
}
for(int i = 1 ;i < 7 ;i++){
for(int j = 1 ;j < 7 ;j++){
table2[i][j] = (letter2[i-1])+(numbers2[j-1]);
}
}
String[][] AItable = new String[7][7];
String[] AIletter = {"A","B","C","D","E","F"};
String[] AInumbers = {"0","1","2","3","4","5"};
table[0][0] = " ";
for(int i = 1 ;i < 7 ;i++){
AItable[i][0] = (AIletter[i-1]);
for(int j = 1 ;j < 7 ;j++){
AItable[0][j] = (AInumbers[j-1]);
}
}
for(int i = 1 ;i < 7 ;i++){
for(int j = 1 ;j < 7 ;j++){
AItable[i][j] = "~";
}
}
boolean done = true;
int counter = 0;
while(done){
int posnum = 1 + (int)(Math.random() * 6);
int posletter = 1 + (int)(Math.random() * 6);
int vorh = 1 + (int)(Math.random() * 2);
if(vorh==1&&posnum==1){
posnum = posnum+1;
}
if(vorh==1&&posnum==6){
posnum = posnum-1;
}
if(vorh==2&&posletter==1){
posletter = posletter+1;
}
if(vorh==2&&posletter==6){
posletter = posletter-1;
}
if(vorh==(1)&&AItable[posletter][posnum].equals("~")&&AItable[posletter][posnum+1].equals("~")&&AItable[posletter][posnum-1].equals("~")){
AItable[posletter][posnum] = ("X");
AItable[posletter][posnum+1] = ("X");
AItable[posletter][posnum-1] = ("X");
counter = counter + 1;
}
if(vorh==(2)&&AItable[posletter][posnum].equals("~")&&AItable[posletter+1][posnum].equals("~")&&AItable[posletter-1][posnum].equals("~")){
AItable[posletter][posnum] = ("X");
AItable[posletter+1][posnum] = ("X");
AItable[posletter-1][posnum] = ("X");
counter = counter + 1;
}
if(counter == 4){
done=false;
}
}
/*AItable[0][0] = " ";
System.out.println("The AI's Ships");
for(int i = 0 ;i < 7 ;i++){
for(int j = 0 ;j < 7 ;j++){
System.out.printf("%-4s",AItable[i][j]);
}
System.out.println();
}*/
System.out.println("\n\nHere are all the coordinates where you may place your ships:\n");
for(int i = 0 ;i < 7 ;i++){
for(int j = 0 ;j < 7 ;j++){
System.out.printf("%-4s",table[i][j]);
}
System.out.println();
}
boolean choose = true;
int counter2 = 0;
int i = 1;
while(choose){
System.out.print("\nDo you want ship #"+(i)+" to be vertical or horizontal? (V/H) > ");
String vorh = a.nextLine().toUpperCase();
System.out.print("Please enter the centre coordinate of ship #"+(i)+" > ");
String input = a.nextLine().toUpperCase();
for(int l = 1 ;l < 7 ;l++){
for(int j = 1 ;j < 7 ;j++){
if(input.equals(table2[l][j])){
if(vorh.equals("V")&&input.charAt(0)==('A')){
System.out.print("Sorry, the position you have chosen is out of bounds, please choose another.");
}
else if(vorh.equals("V")&&input.charAt(0)==('F')){
System.out.print("Sorry, the position you have chosen is out of bounds, please choose another.");
}
else if(vorh.equals("V")){
table[l][j] = ("X");
table[l+1][j] = ("X");
table[l-1][j] = ("X");
counter2 = counter2 + 1;
i = i+1;
}
if(vorh.equals("H")&&input.charAt(1)==('0')){
System.out.print("Sorry, the position you have chosen is out of bounds, please choose another.");
}
else if(vorh.equals("H")&&input.charAt(1)==('5')){
System.out.print("Sorry, the position you have chosen is out of bounds, please choose another.");
}
else if(vorh.equals("H")){
table[l][j] = ("X");
table[l][j+1] = ("X");
table[l][j-1] = ("X");
counter2 = counter2 + 1;
i = i+1;
}
}
}
}
//}
if (counter2 == 4){
choose = false;
}
System.out.println();
for(int p = 0 ;p < 7 ;p++){
for(int j = 0 ;j < 7 ;j++){
System.out.printf("%-4s",table[p][j]);
}
System.out.println();
}
}
System.out.print("\nNow You Must Destroy All Enemy Ships!");
boolean destroy = true;
int destroyed = 0;
int aidestroyed = 0;
while(destroy){
System.out.print("\nPlease enter a coordinate > ");
String input = a.nextLine().toUpperCase();
for(int l = 1 ;l < 7 ;l++){
for(int j = 1 ;j < 7 ;j++){
if(input.equals(table2[l][j])){
if(AItable[l][j].equals("X")){
System.out.println("HIT!\n");
destroyed = destroyed + 1;
hmtable[l][j] = "!";
}
else{
System.out.println("MISS!\n");
hmtable[l][j] = "O";
}
System.out.println();
for(int p = 0 ;p < 7 ;p++){
for(int q = 0 ;q < 7 ;q++){
System.out.printf("%-4s",hmtable[p][q]);
}
System.out.println();
}
}
}
}
System.out.println("The Enemy Has Chosen A Coordinate.");
int posnum = 1 + (int)(Math.random() * 6);
int posletter = 1 + (int)(Math.random() * 6);
if(table[posletter][posnum].equals("X")){
System.out.println("You Have Been Hit By The Enemy!\n");
table[posletter][posnum] = ("!");
aidestroyed = aidestroyed + 1;
}
else if(table[posletter][posnum].equals("~")){
System.out.println("The Enemy Missed!\n");
table[posletter][posnum] = ("O");
}
else if(!table[posletter][posnum].equals("!")||!table[posletter][posnum].equals("X")){
System.out.println("The Enemy Missed!\n");
}
System.out.println();
for(int p = 0 ;p < 7 ;p++){
for(int q = 0 ;q < 7 ;q++){
System.out.printf("%-4s",table[p][q]);
}
System.out.println();
}
if(destroyed == 12){
System.out.print("Great Job! You Have Destroyed All Enemy Ships!");
destroy = false;
break;
}
if(aidestroyed == 12){
System.out.print("Unlucky! The Enemy Have Destroyed All Of Your Ships!");
destroy = false;
break;
}
}
}
}

最佳答案

要使用 JOptionPane 接收用户的输入,请使用:

String inputString = JOptionPane.showInputDialog(null, "Enter input");

您只需将 scanner.nextXXX() 替换为该行即可。

注意:如果用户按下 JOptionPane 上的 X 按钮,结果可能为 null,您应该像这样检查:

String inputString = JOptionPane.showInputDialog(null, "Enter input");
if(inputString!=null){
//and then use the inputString
...
}

关于java - 将控制台代码转换为 JOptionPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365500/

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