Почти 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, и ошибок нет, строка просто не отображается на экране.
Вы знаете, что устали, когда начинаете pep-говорить себя в вопросе. Я просто это понял. – MrPork
Я не совсем уверен, будет ли это решение, потому что я не использую StateBasedGame (что мне нужно), но проверили ли вы наложение изображений/текста? Элемент, нарисованный первым, будет покрыт последним элементом, который рисуется. Появляется журнал консоли? Почему у вас случайный 'try'' catch' в космосе? – Twister1002
@ Twister1002 Я предполагаю, что ты прав. Я только что собрал достаточно информации, чтобы сделать вывод, что ссылки на Graphics, которые я сделал, верны. Поскольку я просто попробовал g.setBackground(), чтобы увидеть, работает ли это, что и было. Спасибо за помощь! – MrPork