デビッド:
だから私は周りを探してきたし、私の質問に一致する答えを見つけることができませんでした。この質問は回答されている場合に謝罪。
ここに私の2つのクラスがある:ゲームクラス
package sample;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import java.awt.*;
public class Game extends Application{
Player Player;
Map Map;
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Game");
Group root = new Group();
double x =0;
double y = 0;
for (Tile[] out: Map.Tiles_Array) {
for (Tile in : out) {
Rectangle rectangle = new Rectangle();
rectangle.setHeight(10);
rectangle.setWidth(10);
rectangle.setX(x);
rectangle.setY(y);
root.getChildren().add(rectangle);
x = x + 10;
}
y = y+ 10;
x = 0;
}
VBox box = new VBox();
root.getChildren().add(box);
final Scene scene = new Scene(root);
scene.setFill(null);
primaryStage.setFullScreen(true);
primaryStage.setScene(scene);
primaryStage.show();
}
public Game(Map map , Player player) {
Map= map;
Player = player;
}
public static void main(String[] args) {
launch(args);
}
void update(){
}
}
``のMainMenuクラス
package sample;
import javafx.stage.Stage;
import java.util.Scanner;
public class MainMenu {
public static void main(String[] args) {
Print("***************************************************");
Print("* Welcome to the best Object Orientated game ever *");
Print("***************************************************");
Print("What is your Name?");
var Name = User_Input();
Print("Are you Male Or Female (M/F)");
char Gender = Check_Gender(User_Input().charAt(0));
Print("Whats is your age");
int Age = Exception_Catcher();
Print("Great, Now you need to choose your avatar that you will play with......");
Print("Your choice is between Archer(A), Knight(K) or Wizard(W)");
Characters Chosen_Character = Check_Choice(User_Input().charAt(0));
Print(Name + " " + Gender +" "+ Age + " " + Chosen_Character.Name); // debugging
Player player1 = new Player(Name,Age,Gender,Chosen_Character);
var Map = new Map(25,25 , player1);
Game My_Game = new Game(Map,player1);
}
private static void Print(String input){ // Prints string it is given
System.out.println(input);
}
private static String User_Input(){ // returns Users response
Scanner s = new Scanner(System.in);
return s.nextLine();
}
private static char Check_Gender(char Letter){
Letter = Character.toUpperCase(Letter);
if(Letter == 'M'){return Letter;}
else if(Letter == 'F'){return Letter;}
else{
Print("Choose M or F");
return Check_Gender(User_Input().charAt(0));
}
}
private static Characters Check_Choice(char Letter){
Letter = Character.toUpperCase(Letter);
if(Letter == 'A'){
return new Archer(50,2,10);
}
else if(Letter == ('K')){
return new Knight(100,1,20);
}
else if(Letter ==('W')){
return new Wizard(25,5,5);
}
else{
Print("Choose one of the correct options:Archer(A), Knight(K) or Wizard(W)");
return Check_Choice(User_Input().charAt(0));
}
}
private static int Exception_Catcher(){ //exception handling for when the user enters a non numerical value
try{
return Check_Age(Integer.parseInt(User_Input()));
}
catch (Exception e){
Print("That's not a correct number format, try again");
return Exception_Catcher();
}
}
private static int Check_Age(int Age){
if (Age <= 0) {
Print("You are not alive apparently");
return Exception_Catcher();
} else if (Age > 120) {
Print("You are not that old!! stop being silly");
return Exception_Catcher();
} else {
return Age;
}
}
}
私のMapオブジェクトとプレーヤーオブジェクトが作成されるならば、私は手続き的ゲームグラフィックスを作成するために、ゲームにそれを渡したいです。私は、デフォルトのステージを作成し、それが複数の例外をスローし、引数として渡したときに、それはしかし、「ステージ」を必要とするしかし方法スタート呼び出すためにゲームのクラスを構築してみました。
c0der:
あなたはからあなたのゲームを開始する必要があるApplication.launch(args)
ので、次のような構造を考慮してください。
public class Game extends Application{
private Player player;
private Map map;
@Override
public void start(Stage primaryStage) throws Exception {
MainMenu mm = new MainMenu();
player = mm.getPlayer();
map = mm.getMap();
//rest of the code remains the same
}
public static void main(String[] args) {
launch(args);
}
}
MainMenu
ユーザの入力を受け取り、構築のみPlayer
とMap
:
public class MainMenu {
private String name,age,gender,chosenCharacter;
private final Player player;
private final Map map;
public MainMenu() {
getUserInput();
player = new Player(name,age,gender,chosenCharacter);
map = new Map(25,25 , player);
}
private void getUserInput(){ // returns Users response
//todo
}
Player getPlayer() {
return player;
}
Map getMap() {
return map;
}
}
より良いオプションは、GUIを使用してユーザー入力を取得することです:
public class GetUserInput {
private Player player;
private Map map;
private final TextField nameTf, ageTf, genderTf, characterTf;
GetUserInput() {
Dialog<Void> dialog = new Dialog<>();
dialog.setTitle("Game Setting");
dialog.setHeaderText("Please enter your prefrences");
// Set the button types.
ButtonType buttonType = new ButtonType("OK", ButtonData.OK_DONE);
dialog.getDialogPane().getButtonTypes().addAll(buttonType, ButtonType.CANCEL);
//Add event handler to ok button
Button okButton = (Button) dialog.getDialogPane().lookupButton(buttonType);
okButton.setOnAction(e-> processInput());
//todo hanlde response when cancel button is pressed
// Create labels and fields.
GridPane grid = new GridPane();
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(20, 150, 10, 10));
nameTf = new TextField();
nameTf.setPromptText("Name");
ageTf = new TextField();
ageTf.setPromptText("Age");
genderTf = new TextField();
genderTf.setPromptText("Gender");
characterTf = new TextField();
characterTf.setPromptText("Character");
//todo add validation to all text fields
grid.add(new Label("Name:"), 0, 0);
grid.add(nameTf, 1, 0);
grid.add(new Label("Age:"), 0, 1);
grid.add(ageTf, 1, 1);
grid.add(new Label("Gender:"), 0, 2);
grid.add(genderTf, 1, 2);
grid.add(new Label("Character:"), 0, 3);
grid.add(characterTf, 1, 3);
dialog.getDialogPane().setContent(grid);
// Request focus on the name field
Platform.runLater(() -> nameTf.requestFocus());
dialog.showAndWait();
}
private void processInput() {
String name = nameTf.getText();
String age = ageTf.getText();
String gender = genderTf.getText();
String chosenCharacter = characterTf.getText();
player = new Player(name,age,gender,chosenCharacter);
map = new Map(25,25 , player);
}
Player getPlayer() {
return player;
}
Map getMap() {
return map;
}
}
とによって、それを使用します。
GetUserInput getUserInput = new GetUserInput();
player = getUserInput.getPlayer();
map = getUserInput.getMap();