Как я могу исправить мертвый код, подобный этому i++, и некоторые повторяющиеся проблемы
Я постоянно получаю ошибку, которая говорит мертвый код на моем i++, что я оставлю комментарий на Я пытаюсь сделать змеиную игру, но я не могу решить этот мертвый код также я получаю дубликат пищи по какой-то причине я прошел через это снова и снова, не стесняйтесь запустить это и посмотреть, что работает
package Snake; import java.awt.Color; import java.awt.Point; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Random; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Snake extends JFrame implements KeyListener, Runnable{ private JPanel p = new JPanel(); private final int WIDTH = 450; private final int HEIGHT = 450; //Snake Properties private JButton[] lb = new JButton[200]; private int x = 500, y = 500; private int gu = 3; private int directionX = 1, directionY = 0, oldX, oldY; private final int speed = 50; //Snake Coordinates private int [] snake_X = new int [300]; private int [] snake_Y = new int [300]; //Snake Movements private boolean move_left = false; private boolean move_right = false; private boolean move_up = false; private boolean move_down = false; private Point[] Snake_Point = new Point[300]; private boolean food = false; private int score = 0; private boolean game_over = false; //Start Thread Thread thread; Random r = new Random(); public Snake(){ super("Snake"); setSize(WIDTH, HEIGHT); setLocationRelativeTo(null); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); starting_Snake(); p.setLayout(null); p.setBackground(Color.BLACK); add(p); show(); initializeValues(); addKeyListener(this); thread = new Thread(this); thread.start(); } public void initializeValues(){ gu = 3; snake_X[0] = 100; snake_Y[0] = 150; directionX = 10; directionY = 0; food = false; score = 0; move_left = false; move_right = true; move_up = true; move_down = true; } public void starting_Snake(){ for(int i = 0; i < gu; i++){ lb[i] = new JButton("lb" + i); lb[i].setEnabled(false); p.add(lb[i]); lb[i].setBounds(snake_X [i], snake_Y [i], 10, 10); snake_X[i+1] = snake_X[i] = snake_X[i] - 10; snake_Y[i+1] = snake_Y[i]; } } public void reset(){ initializeValues(); p.removeAll(); thread.stop(); starting_Snake(); thread = new Thread(this); thread.start(); } // Snake gets bigger public void growUp(){ lb[gu] = new JButton(); lb[gu].setEnabled(false); p.add(lb[gu]); int x = 10 + (10 * r.nextInt(44)); int y = 10 + (10 * r.nextInt(44)); snake_X[gu] = x; snake_Y[gu] = y; lb[gu].setBounds(x, y, 10, 10); gu++; } public void move_Forward(){ for(int i = 0; i < gu; i++){ Snake_Point[i] = lb[i].getLocation(); } snake_X[0] += directionX; snake_Y[0] += directionY; lb[0].setBounds(snake_X[0], snake_Y[0], 10, 10); // dead code ↓ for(int i = 1; i < gu; i++){ lb[i].setLocation(Snake_Point[i - 1]); //logic for snake movements if(snake_X[0] == x){ snake_X[0] = 10; }else if(snake_X[0] == 0){ snake_X[0] = x - 10; }else if(snake_Y[0] == y){ snake_Y[0] = 10; }else if(snake_Y[0] == 0){ snake_Y[0] = y - 10; } //increase score when snake gets food if(snake_X[0] == snake_X[gu - 1] && snake_Y[0] == snake_Y[gu-1]){ food = false; score += 5; System.out.println("Score: "+ score); //generates food when false } if(food == false){ growUp(); food = true; }else{ lb[gu - 1].setBounds(snake_X[gu - 1], snake_Y[gu - 1] , 10, 10); } for (int i1 = 1; i1 < gu; i1++){ if(Snake_Point[0] == Snake_Point[i1]){ System.out.println("GAME OVER!!!: "+ score); } try{ thread.join(); }catch(Exception e){ } } break; } p.repaint(); show(); } @Override public void run() { // Starts game by moving snake while(!game_over){ move_Forward(); try{ Thread.sleep(speed); }catch (InterruptedException e) { e.printStackTrace(); } } } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed( KeyEvent e) { // TODO Auto-generated method stub //Moving Left if(move_left == true && e.getKeyCode() == 37){ directionX = -10; directionY = 0; move_right = false; move_up = true; move_down = true; System.out.println("MOVING LEFT"); //Moving UP } if(move_up == true && e.getKeyCode() == 38){ directionX = 0; directionY = -10; move_right = true; move_left = true; move_down = false; System.out.println("MOVING UP"); //Moving RIGHT } if(move_right == true && e.getKeyCode() == 39){ directionX = 10; directionY = 0; move_left = false; move_up = true; move_down = true; System.out.println("MOVING RIGHT"); //Moving DOWN } if(move_down == true && e.getKeyCode() == 40){ directionX = 0; directionY = 10; move_right = true; move_up = false; move_left = true; System.out.println("MOVING DOWN"); } } @Override public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub } }
Что я уже пробовал:
переставляя его и удаляя но он мне нужен я также искал дубликат кода
OriginalGriff
Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы. Так что же вы имеете в виду, и что вы на самом деле пытаетесь сделать?
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.
OriginalGriff
Это все еще ничего не значит для нас: где вы получаете сообщения "мертвого кода", и что такое точное сообщение об ошибке?
Перестаньте пытаться печатать как можно меньше: это будет намного быстрее, если вы дадите нам актуальную информацию!
Richard MacCutchan
Каково точное и полное сообщение об ошибке?