2015-11-24 3 views
0

Попытка получить программу, подобную этой, для работы на платформе Android. Проблема в том, что я не уверен в использовании xml для отображения ввода текста/чтения. Я довольно новичок в разработке мобильных программ, но из приведенного ниже кода я просто пытаюсь отобразить операторы печати и, очевидно, также получить пользовательский ввод.Отображение текста в проекте студии Android

import java.util.Scanner; 
    import java.util.Random; 

    public class assignmentMSD 
    { 
     public static void main(String[] args) 
     { 
      //objects(system) 
      Scanner in = new Scanner(System.in); 
      Random rand = new Random(); 

     //Variables used 

     String[] enemies = {"Zombie", "Necromorph", "Soldier", "MadMax"}; 
     int maxEnemyHealth = 75; 
     int enemyAttackDamage = 25; 

     //Player Variables 
     int health = 100; 
     int attackDamage = 50; 
     int numHealthElixers = 3; 
     int healthPotionHeal = 30; 
     int healthPotionDropChance = 50; 

     boolean running = true; 

     System.out.println("Welcome to the Thunderdome"); 

     GAME: 
     while(running) 
     { 
      System.out.println("--------------------------------------------------"); 

      int enemyHealth = rand.nextInt(maxEnemyHealth); 
      String enemy = enemies[rand.nextInt(enemies.length)]; 
      System.out.println(" \t####" + enemy + " has appeared#### \n"); 

      while(enemyHealth > 0) 
      { 
       System.out.println("\t Your Health:" + health); 
       System.out.println("\t" + enemy + "'s Health:" + enemyHealth); 
       System.out.println("\n \t What would you like to do?"); 
       System.out.println("\t 1. Attack"); 
       System.out.println("\t 2. Drink Health Potion"); 
       System.out.println("\t 3. Run"); 

       String input = in.nextLine(); 
           if(input.equals("1")) 
           { 
            int damageGiven = rand.nextInt(attackDamage); 
            int damageTaken = rand.nextInt(enemyAttackDamage); 

            enemyHealth -= damageGiven; 
            health -= damageTaken; 

            System.out.println("\t You strike the " + enemy + " for " + damageGiven + " damage."); 
            System.out.println("\t You take " + damageTaken + " in combat:"); 

            if(health < 1) 
            { 
             System.out.println("\t You have taken too much damage and therefore are too weak to fight!"); 
             break; 

            } 


           } 
           else if(input.equals("2")) 
           { 
            if(numHealthElixers > 0) 
            { 
             health += healthPotionHeal; 
             numHealthElixers--; 
             System.out.println("You drink a heakth potion for " + healthPotionHeal + "." 
                  + "\n\t You now have" + health + " HP." 
                  +"\n\t You have " + numHealthElixers + " Health Elixers left. \n"); 

            } 
            else 
            { 
             System.out.println("\t You have no health Elixer left!, You must defeat enemies for a chance to get more \n"); 

            } 
           } 
           else if(input.equals("3")) 
           { 
            System.out.println("\t You run away from the " + enemy + "!"); 
            continue GAME; 
           } 
           else 
           { 
            System.out.println("\t\n Invalid Command"); 
           } 
      } 

         if(health < 1) 
         { 
          System.out.println("You Flee from the Thunderdome, weak from battle"); 
          break; 
         } 

         System.out.println("-------------------------------"); 
         System.out.println(" # " + enemy + "was defeated! # "); 
         System.out.println(" # You have" + health + " HP left. #"); 
         if(rand.nextInt(100) < healthPotionDropChance) 
         { 
          numHealthElixers++; 
          System.out.println(" # The " + enemy + " dropped a health potion #"); 
          System.out.println(" # You now have " + numHealthElixers + " Health Elixer(s). #"); 

         } 
         System.out.println("-------------------------------"); 
         System.out.println("What would you like to do now?"); 
         System.out.println("1. Continue Fighting"); 
         System.out.println("2. Exit Dungeon"); 

         String input = in.nextLine(); 

         while(!input.equals("1") && !input.equals("2")) 
         { 
          System.out.println("invalid command"); 
          input = in.nextLine(); 

         } 

         if(input.equals("1")) 
         { 
          System.out.println("You continue through the thunderdome"); 
         } 
         else if(input.equals("2")) 
         { 
          System.out.println("You exit the thunderdome a wiser man, sucessful on your quest"); 
          break; 
         } 
     } 

       System.out.println(" -------------------------- "); 
       System.out.println(" ----Thanks for playing----"); 
       System.out.println(" -------------------------- "); 


    } 
} 
+1

Просто используйте TextView для отображения текста и EditText для ввода пользователем, проверьте это: http://developer.android.com/guide/topics/ui/controls/text.html. Я также рекомендую некоторые видеоуроки по основам Android: http://www.newthinktank.com/2014/06/android-beginners/ –

+0

Вы делаете полную сетку выше. И я знаю, что вы даже не поймете ни единого слова из документов. Я предлагаю вам взглянуть на эти https://www.youtube.com/watch?v=gcPgdra10Oc&index=5&list=PLonJJ3BVjZW6hYgvtkaWvwAVvOFB7fkLa –

ответ

2

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

Это хорошая ссылка, чтобы посмотреть на: http://developer.android.com/training/basics/firstapp/building-ui.html

В developer.android подготовки статьи очень хорошо, даже для новичка. Используйте файл xml в папке res/layout для вашего пользовательского интерфейса. Android Studio даже посмотрим, как будет выглядеть ваш пользовательский интерфейс, если вы нажмете на вкладке «Дизайн» внизу.

Side Примечание: Вы увидите, что это намного больше удовольствия, чем System.out.println()

+0

Что делать, если я преобразовал текст в строку и поместил его в текстовое представление? – Bryan

1

Первый в Android вам нужно определить расположение. Использование:

  • EditText заменить входы пользователя (Scanner)
  • TextView заменить выходы для пользователя (System.out.println)

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/some_label_text"/> 
<EditText 
    android:id="@+id/example_input" 
    android:hint="@string/some_hint_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

Примечание: Этикетки, если текст предопределен, может иметь текст в определении.

Второй ссылается на свои объекты в вашем приложении java по id, как это.

EditText exampleInput = (EditText)dialogCarro.findViewById(R.id.example_input); 

Третий вам нужно будет добавить Listeners в Button с или EditText с.

+0

Должен ли я заменить каждый файл system.out.print новым текстовым представлением или все это можно сделать с одного – Bryan

+0

В зависимости от ваших запросов, но в стандартном потоке с одним должно быть достаточно –

+0

На данный момент его просто получить он работает на Android. Я получил совет по преобразованию текста в строку и помещению его в текстовое представление, но для этого потребуется несколько текстовых представлений. Если есть способ показать все в одном текстовом представлении на тот момент, я полагаю, что это был бы лучший вариант. – Bryan

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