2015-12-23 3 views
2

Я пытаюсь создать графический интерфейс для игры, которую я создал, первоначально эта игра была консольной, однако я пытаюсь улучшить свои навыки и добавить графический интерфейс.Создание графического интерфейса с Eclipse WindowBuilder

мне удалось добавить кнопку и добавить обработчик события так, когда эта кнопка нажата, код будет работать, однако, я задаюсь вопросом ...

Поскольку моя игра была ранее консольный, где я бы вставлял весь код в свой главный метод в часть GUI, как бы я тогда распечатал текст, который я использовал для текстового поля в графическом интерфейсе, а затем как бы он отображал кнопки (в этом случае , Атака, Защита или Бегство).

Мне также интересно, как мне будет ждать код для пользователей. Нажмите на одну из кнопок, а затем, как бы я мог запустить код при нажатии этой кнопки.

Вот код, который у меня есть в моем основном методе. Это довольно много.

import java.util.Scanner; 
import java.util.Random; 
import java.util.concurrent.TimeUnit; 

public class Start { 
    public static void main(String[] args) throws InterruptedException { 
     Scanner reader = new Scanner(System.in); 
     Random Randint = new Random(); 

     int level = playerstats.level; 
     int experiance = playerstats.experiance; 
     int defence = playerstats.defence; 
     int levelcap = playerstats.levelcap; 
     int attackBase = playerstats.attackbase; 
     int agility = playerstats.agility; 
     String location = "Hell"; 
     int health = 100; 

     int defended = 0; 
     Boolean alive = true; 
     if (alive = true) { 
      while (alive) { 
       if (experiance >= levelcap) { 
        level++; 
        experiance = experiance * 2; 
        attackBase = attackBase + 5; 
       } 
       boolean enemyalive = false; 
       byte Choice; 
       int fleeattempt; 
       System.out.println("You're still alive. Surprising."); 
       System.out.println("Your current level is " + level + " you require " + (levelcap - experiance) 
         + " more experiance to level up"); 
       System.out.println("Press enter to continue walking"); 
       reader.nextLine(); 
       System.out.println("You've encountered an enemy!"); 
       int enemyencountered = Randint.nextInt(1); 
       if (enemyencountered == 0) { 
        enemyencountered = enemyencountered + 1; 
       } else { 
       } 
       enemyalive = true; 
       while (enemyalive) { 
        switch (enemyencountered) { 
        case 1: 
         int enemyhealth = goblin.health; 
         int enemydefence = goblin.defence; 
         String enemyname = goblin.name; 
         int enemyagility = goblin.agility; 
         while (enemyalive) { 
          if (defended == 1) { 
           defence = defence - 5; 
           defended = 0; 
          } 
          TimeUnit.SECONDS.sleep(1); 
          System.out.println("You have encountered a " + enemyname); 
          TimeUnit.SECONDS.sleep(1); 
          System.out.println("You have " + health + " remaining HP"); 
          TimeUnit.SECONDS.sleep(1); 
          System.out.println("It has " + enemyhealth + " Remaining HP"); 
          System.out.println("1. attack"); 
          System.out.println("2. Inspect Enemy"); 
          System.out.println("3. Defend"); 
          System.out.println("4. Flee"); 
          System.out.println("5. Quit."); 
          Choice = reader.nextByte(); 
          switch (Choice) { 
           case 1: 
            int Hit = attackBase - enemydefence; 
            int attack = Randint.nextInt(Hit); 
            System.out.println("You hit the enemy for " + attack); 
            enemyhealth = enemyhealth - attack; 
            if (enemyhealth <= 0) { 
             System.out.println(enemyname + " has been killed! Welldone!"); 
             enemyalive = false; 
            } 
            break; 
           case 2: 
            System.out.println(enemyname + " has " + enemydefence + " defence"); 
            break; 
           case 3: 
            System.out.println("You prepare yourself for the enemies attack!"); 
            defence = defence + 5; 
            defended = 1; 
            break; 
           case 4: 
            System.out.println("You're trying to flee. Coward!"); 
            TimeUnit.SECONDS.sleep(1); 
            fleeattempt = Randint.nextInt(agility); 
            if (fleeattempt > enemyagility) { 
             System.out.println("You successfuly Escape!"); 
             enemyalive = false; 
            } else { 
             System.out.println("You accidently fall over while trying to escape."); 
             TimeUnit.SECONDS.sleep(1); 
             health = health - 5; 
             System.out.println("You lose 5 HP."); 
            } 
            break; 
           case 5: 
            System.out.println("Quitting, eh?... Well, bye!"); 
            alive = false; 
            enemyalive = false; 
            break; 
          } 

          if (enemyalive) { 
           int enemyattack; 
           enemyattack = goblin.baseattack; 
           int enemydamage = Randint.nextInt(enemyattack); 
           health = health - enemydamage; 
           System.out.println(enemyname + " Has hit you for " + enemydamage + " HP!"); 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 
+0

Имена переменных должны начинаться с строчной буквы в соответствии с соглашениями об именах Java. Это очень трудно прочитать код. Пожалуйста исправьте. – user1803551

+0

Я сделал все переменные в нижнем регистре. –

+0

Где определяется 'playerstats' и' goblin'? Это не [SSCCE] (http://sscce.org/). –

ответ

2

Я хотел бы предложить первый начать больше читать о Java Swing, черт даже смотреть и закончить учебник на Youtube. Ваши вопросы:

Вопрос: Мне также интересно, как я буду ждать, когда код будет ждать пользователей. Нажмите на одну из кнопок, а затем, как бы мне пришлось запускать код при нажатии этой кнопки.

Ответ: Хорошо, когда вы запускаете GUI-код, он не запускается непрерывно, он ждет и «прослушивает» вход пользователя. Когда вы нажимаете эту кнопку, действие «прослушиватель» или любой из слушателей, которые вы внедрили, будет запускать код, который вы хотите запустить при нажатии кнопки.

Вопрос: Так как моя игра была ранее на основе консоли, где бы я вставлял весь код в свой основной метод в часть GUI, как бы я тогда распечатал текст, который я использовал для текстового поля в GUI, то как бы мне это показать кнопки (в этом случае, атаковать, защищать или бегать).

Ответ: GUI огромное поле и выяснить, как вы хотите, чтобы ваше окно, чтобы посмотреть, где и как тексты будут распечатаны проверить это:

http://da2i.univ-lille1.fr/doc/tutorial-java/ui/features/components.html

Для этих кнопок вы можете всегда используйте JButton, и вы все равно можете использовать 1, 2, 3, 4, введенные с клавиатуры, относительно того, как вы будете нажимать в этом случае, атаковать, защищать или бежать.

Еще одна вещь о windowsbuilder заключается в том, что в вашем случае, поскольку вы уже сделали программу на консоли и хотите преобразовать ее в графический интерфейс, это может быть проще, быстрее и интереснее, если вы не используете . использовать windowbuilder. Сделайте это вручную.

+0

Кажется, этот ответ ответил на мой вопрос. Благодаря! –

Смежные вопросы