2014-01-14 10 views
-1

Я создал одноклассную Java-игру, в которой нам нужно покупать и продавать акции, я только что начал Java и стал новичком, поэтому нам нужна помощь + этот код не очень хорош.Преобразование командной строки в апплет

import java.io.*; 
import java.util.Random; 
public class stock_holding_game 
{ 
    static Random randomn = new Random(); 
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
public static void main(String[] args)throws IOException 
    { 
     double cash = 30.0; 
     double stocks[] = {0,10,20,40,80,160,320,640};//cost of stocks (there are 7 stocks each with different price) 
     int mystocks[] = {0,0,0,0,0,0,0,0}; 
     pass("Enter your name"); 
     String name = br.readLine(); 
     pass("Hi "+name); 
     commandlist(); 
     boolean booleancheck = true; 
     while(booleancheck) 
     { 
      pass("Please enter your command"); 
      String command = br.readLine(); 
      command =" "+command+" "; 
      char c = command.charAt(2); 
      switch(c) 
      { 
       case'h': 
       pass("enter the stock ID number"); 
       int s1 = Integer.parseInt(br.readLine()); 
       if(s1>0&&s1<=8) 
       { 
        pass("Starting price: "+stocks[s1]);      
        double t = randomn.nextDouble() *(stocks[s1]/10.0); 
        int add = randomn.nextInt(2); 
        if(add==0)stocks[s1]=stocks[s1]+t; 
        else 
        stocks[s1]=stocks[s1]-t; 
        pass("Current price: "+stocks[s1]); 
       } 
       else 
       { 
        pass("Wrong Number"); 
        pass("Enter a number from 1 to 8"); 
        pass("Do whole task again xD"); 
       } 
       break; 
       case 'n': 
       pass("Enter the stock ID number"); 
       int s2 = Integer.parseInt(br.readLine()); 
       if(s2>0&&s2<=8) 
       { 
        double t = randomn.nextDouble() *(stocks[s2]/10.0); 
        int add = randomn.nextInt(2); 
        if(add==0)stocks[s2]=stocks[s2]+t; 
        else 
        stocks[s2]=stocks[s2]-t; 
        pass("Current price: "+stocks[s2]); 
        pass("You currently have: "+mystocks[s2]+ " of these stocks"); 
        pass("You have " +cash+" cash"); 
        pass("Enter the number of stocks you wish to buy"); 
        int nsbuy = Integer.parseInt(br.readLine()); 
        if(nsbuy<0)pass("Idiot ! , add atleast 1 if you wish to buy"); 
        else if(nsbuy==0); 
        else 
        { 
         double checkprice = nsbuy*stocks[s2]; 
         if(checkprice > cash) 
         { 
          pass("You don't have enough cash in hand !"); 
         } 
         else 
         { 
          cash = cash - checkprice; 
          mystocks[s2] = mystocks[s2] + nsbuy; 
          pass("Now you have "+mystocks[s2]+ " of stock ID " +s2); 
          pass("You are left with "+cash); 
         } 
        } 
      } 
      else 
      { 
       pass("Invalid Input!"); 
       pass("Enter a number from 1 to 8"); 
      } 
      break; 
      case 'a': 
      pass("You have currentln " +cash+" cash"); 
      break; 
      case 'x': 
      booleancheck = false ; 
      pass("You leave with "+cash+" cash"); 
      pass("Bye, Hope to see you again ."); 
      break; 
      case 'o': 
      commandlist(); 
      break; 
      case 'y': 
      for(int xyz = 1; xyz<mystocks.length - 1;xyz++) 
      { 
       pass("You have "+mystocks[xyz]+ " of stock ID "+xyz); 
      } 
      break; 
      case 'e': 
      pass("Enter the stock ID number"); 
      int s3 = Integer.parseInt(br.readLine()); 
      if(s3>0&&s3<=8) 
      { 
       double t = randomn.nextDouble() *(stocks[s3]/10.0); 
       int add = randomn.nextInt(2); 
       if(add==0)stocks[s3]=stocks[s3]+t; 
       else 
       stocks[s3]=stocks[s3]-t; 
       pass("Current price: "+stocks[s3]); 
       pass("You currently have: "+mystocks[s3]+ " of these stocks"); 
       pass("You have " +cash+" cash"); 
       pass("Enter the number of stocks you wish to sell"); 
       int nssell = Integer.parseInt(br.readLine()); 
       if(nssell<0)pass("Enter atleast 1 if you wish to sell(in case you have)"); 
       else if(nssell==0); 
       else 
       { 
        double nscheckprice = stocks[s3]*nssell; 
        if(nssell>mystocks[s3])pass("You don't jave that many stocks !"); 
        else 
        mystocks[s3] = mystocks[s3] - nssell; 
        cash = cash + nscheckprice; 
        pass("You have successfully sold your " +nssell+" stocks for "+nscheckprice); 
        pass("Now , you have , "+ mystocks[s3]+ " of stock ID "+s3); 
        pass("You are left with " +cash + " cash"); 
       } 
      } 
      else 
      { 
       pass("Invalid Input!"); 
       pass("Enter a number from 1 to 8"); 
      } 
      break; 
      default: 
      pass("Invalid Input!"); 
      break;     
     } 
    } 
} 
private static void commandlist() 
{ 
    pas("Your command list : "); 
    pas("checkstock - check the current and earlier value of a stock"); 
    pas("invest - buy shares "); 
    pas("sell - sell ur share "); 
    pas("exit - leave the game"); 
    pas("my - show ur all current stock"); 
    pas("cash - show ur current cash in hand"); 
    pas("There are 7 stock with id 1 , 2 , 3 , and so on till 7") 
    pas("Remember ! It is case sensitive"); 
} 
private static void pass(String source) 
{ 
    System.out.println(source); 
} 
private static void pas(String source) 
{ 
    System.err.println(source); 
} 
} 

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

И да, также расскажите, как эта игра (Оцените эту игру), но оцените как будто новичок, как сделал это. Теперь, вместо того, чтобы подробно спрашивать, как преобразовать его в апплет, я хочу спросить его в небольших блоках. Прежде всего, как я могу использовать кнопку и рассказывать своему компьютеру, как действовать?

Это мой код:

import java.awt.*; 

public class Buttonsuse extends java.applet.Applet 
{ 
    Button invest , sell , check ; 
    public void init() 
    { 
     setBackground (Color.white); 
     setLayout(new FlowLayout (FlowLayout.CENTER,10,10)); 
     invest = new Button("Invest"); 
     sell = new Button("Sell"); 
     check = new Button("Check"); 
     add(invest); 
     add(sell); 
     add(check); 
     } 
} 

Теперь, как я должен знать и сообщить компьютеру, что при нажатии кнопки, например, если пользователь нажимает кнопку инвестировать, она печатает «вы хотите инвестировать».

Как это сделать?

+0

Взгляните на [Учебное пособие Swing] (http://docs.oracle.com/javase/tutorial/uiswing/), затем взгляните на [Апплеты учебник] (http://docs.oracle.com/javase /tutorial/deployment/applet/index.html) –

+0

* «Нужна помощь в преобразовании java-игры в Java-апплет» * Noooooooo! Преобразуйте его в JFrame, затем запустите его из ссылки, используя [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info). Это будет быстрее, чтобы добраться до точки развертывания, снизить обслуживание, и пользователи будут благодарить вас. –

+0

'public class Buttonsuse расширяет java.applet.Applet' И независимо от того, каким способом вы решили продолжить, используйте компоненты Swing вместо AWT.См. Мой ответ на [Swing extras over AWT] (http://stackoverflow.com/a/6255978/418556) по многим причинам, чтобы отказаться от использования компонентов AWT. –

ответ

2

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

  • Извлеките логику или мозги за вашей программой в настоящие классы ООП с полями экземпляра, конструкторами и нестационарными методами.
  • Только после этого вы должны подумать о создании графического интерфейса для отображения логики.
  • Прочтите достойную книгу о ООП и Java, такую ​​как «Мышление в Java», так как это поможет вам думать и кодировать способом ООП.

Non-GUI классов рассмотреть следующие вопросы:

  • сток классов с именем Струнным, двойное значение (или BigDecimal), String сокращенного названия
  • игрок, который содержит строку для имени, HashMap<Stock, Integer> для запасов и количество акций.
  • Рынок, на котором игрок может покупать и продавать Акции.

Суть заключается в том, что не существует какой-то одной простой способ «преобразовать» этот код в GUI, и вместо этого вы должны сосредоточиться на изучении Java основы, и экспериментировать с кодом во время обучения (для вот как вы учитесь).

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