2014-01-06 4 views
0

Почти 2 дня, и я до сих пор не понял этого. Я почти уверен, что сейчас у меня бессонница, и я просто хочу знать, как это сделать. Строка, которую я хочу сделать, находится в startGame() класса Square. Этот метод вызывается в моем классе NormalMode в startNormalMode(). Пошел спать в 9 вечера проснулся в 11:30 вечера, теперь это 3:05 утра, и я все еще не могу спать из-за этой проблемы. Как можно больше информации оценивается, я просто не хочу стать лучшим программистом. Нет ничего лучше опыта.Строка не рисует

Мой квадратный класс:

package data.src; 

import java.util.Random; 




import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.Image; 
import org.newdawn.slick.SlickException; 
import org.newdawn.slick.state.StateBasedGame; 

public class Square { 

    private StateBasedGame game; 
    boolean correct; 
    boolean clickable; 
    boolean clicked; 
    boolean started; 
    int squares; 
    public Image squareIncorrect; 
    public Image squareCorrect; 
    public Graphics g; 



    //For drawing these images from other classes 



    { 
     try { 
      squareIncorrect = new Image("res/squareIncorrect.png"); 
     } catch (SlickException e1) { 

      e1.printStackTrace(); 
     } 
     try { 
      squareCorrect = new Image("res/squareCorrect.png"); 
     } catch (SlickException e) { 

      e.printStackTrace(); 
     } 
    } 

    public Square() { 



    } 

    public boolean checkCorrect(){ 
     return correct; 

    } 
    public boolean checkClickable(){ 
     return clickable; 
    } 

    public boolean checkClicked(){ 
     return clicked; 

    } 

    public int returnNumberOfSquares(){ 
     return squares; 

    } 
    //Draw appropriate square on screen depending on the creatRandom. CREATE THE RANDOM FIRST! 
     public void squareDraw(int x ,int y, Graphics g)throws SlickException{ 

      if(correct == true){ 
       g.drawImage(squareCorrect, x, y); 
       started = true; 
      } 
      else if(correct == false){ 
       g.drawImage(squareIncorrect, x, y); 
      started = true; 
      } 
    } 

    public void createRandom(){ 

     Random rand = new Random(); 
     int sRand = rand.nextInt(2); 

      if(sRand == 0){ 
       correct = false; 
       clickable = true; 
       clicked = false; 
       System.out.println("This square is a phony!"); 

      } 
      else if(sRand == 1){ 
       correct = true; 
       clickable = true; 
       clicked = false; 
       System.out.println("This is a true Square!"); 
       squares = squares+1; 
      } 
     } 

    public void startGame(Graphics g, GameContainer container)throws SlickException{ 
     System.out.println("It works."); 
     g.drawString("Remember the blue squares! The game will start in 5 seconds!", 200, 300); 


    } 




    public void youWin(int x, int y, Graphics g){ 
     if(squares == 0){ 
      g.drawString("You win!", x, y); 
      try { 
       wait(4000); 
       game.enterState(0); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 

      } 
     } 
    } 
} 

Мой NormalMode класс:

package data.src; 

import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.SlickException; 
import org.newdawn.slick.state.BasicGameState; 
import org.newdawn.slick.state.StateBasedGame; 

public class NormalMode extends BasicGameState { 

    private Square[][] square = new Square[4][4]; 
    private Square squareChecker; 
    Graphics g; 


    public NormalMode() { 


       } 

    @Override 
    public void init(GameContainer arg0, StateBasedGame Game)throws SlickException { 
     squareChecker = new Square(); 
        for(int i = 0; i < square.length; i++){ 
         for(int j = 0; j < square.length; j++){ 
          square[i][j] = new Square(); 
          square[i][j].createRandom(); 

         } 
      } 
        startNormalMode(arg0); 
    }     



    @Override 
    public void render(GameContainer container, StateBasedGame game, Graphics g) 
      throws SlickException{ 

       square[0][0].squareDraw(100, 300, g); 
       square[0][1].squareDraw(150, 300, g); 
       square[0][2].squareDraw(200, 300, g); 
       square[0][3].squareDraw(250, 300, g); 

       square[1][0].squareDraw(100, 400, g); 
       square[1][1].squareDraw(150, 400, g); 
       square[1][2].squareDraw(200, 400, g); 
       square[1][3].squareDraw(250, 400, g); 

       square[2][0].squareDraw(100, 500, g); 
       square[2][1].squareDraw(150, 500, g); 
       square[2][2].squareDraw(200, 500, g); 
       square[2][3].squareDraw(250, 500, g); 

       square[3][0].squareDraw(100, 600, g); 
       square[3][1].squareDraw(150, 600, g); 
       square[3][2].squareDraw(200, 600, g); 
       square[3][3].squareDraw(250, 600, g); 


        } 

    @Override 
    public void update(GameContainer container, StateBasedGame game, int delta) 
      throws SlickException { 

    } 

    @Override 
    public int getID() { 
     return 3; 
    } 


public void startNormalMode(GameContainer container)throws SlickException{ 

     Graphics g1 = container.getGraphics(); 


     squareChecker.startGame(g1, container); 

    } 
} 

P.S. : Я использую библиотеку slick2D, и ошибок нет, строка просто не отображается на экране.

+0

Вы знаете, что устали, когда начинаете pep-говорить себя в вопросе. Я просто это понял. – MrPork

+0

Я не совсем уверен, будет ли это решение, потому что я не использую StateBasedGame (что мне нужно), но проверили ли вы наложение изображений/текста? Элемент, нарисованный первым, будет покрыт последним элементом, который рисуется. Появляется журнал консоли? Почему у вас случайный 'try'' catch' в космосе? – Twister1002

+0

@ Twister1002 Я предполагаю, что ты прав. Я только что собрал достаточно информации, чтобы сделать вывод, что ссылки на Graphics, которые я сделал, верны. Поскольку я просто попробовал g.setBackground(), чтобы увидеть, работает ли это, что и было. Спасибо за помощь! – MrPork

ответ

0

В комментариях, сделанных в Orginal Post, просто проверьте элементы, в которых ваша игра отображает графику. Первый элемент будет покрыт последним элементом, который рисуется.

Если вам нужна дополнительная информация, сообщите мне, и я сделаю все, что в моих силах!

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