废话不多说,直接奉上代码:
Bingkai.java
paket ular; impor java.awt.Graphics;impor java.awt.Menu;impor java.awt.MenuBar;impor java.awt.MenuItem;impor java.awt.event.ActionEvent;impor java.awt.event.ActionListener;impor java.awt .event.KeyEvent;impor java.awt.event.KeyListener; impor javax.swing.JFrame; kelas publik Frame memperluas JFrame mengimplementasikan KeyListener { /** * */ Boolean isAlive; Boolean adalah Jeda; panel panel; Arah karakter; serialVersionUID panjang akhir statis pribadi = 1L; public Frame(){ // TODO stub konstruktor yang dibuat secara otomatis setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setUkuran(300,300); addKeyListener(ini); panel = Panel baru(); tambahkan(panel); setVisible(benar); isAlive = benar; isPause = salah; arah = Karakter baru('d'); MenuBar menuBar = MenuBar baru(); Menu menu = Menu baru("menu"); Reset MenuItem = MenuItem baru("game baru"); MenuItem jeda= MenuItem baru("jeda"); jeda.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Metode yang dibuat secara otomatis stub if(!isPause) isPause= true; else isPause= false; } }); reset.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Metode yang dibuat secara otomatis stub reset(); } }); menu.tambahkan(reset); menu.tambahkan(jeda); menuBar.tambahkan(menu); setMenuBar(menuBar); } public void reset(){ panel.reset(); isAlive = benar; } @Override public void keyTyped(KeyEvent e) { // TODO Stub metode yang dibuat secara otomatis } @Override public void keyPressed(KeyEvent e) { // TODO Stub metode yang dibuat secara otomatis if(e.getKeyCode()==KeyEvent.VK_UP ) arah = 'w'; if(e.getKeyCode()==KeyEvent.VK_DOWN) arah = 's'; if(e.getKeyCode()==KeyEvent.VK_LEFT) arah = 'a'; if(e.getKeyCode()==KeyEvent.VK_RIGHT) arah = 'd'; } @Override public void keyReleased(KeyEvent e) { // TODO Stub metode yang dibuat secara otomatis } public void paint(Grafik g){ panel.repaint(); } }
Peluncuran.java
paket ular; impor java.util.Timer;impor java.util.TimerTask; peluncuran kelas publik meluas TimerTask { Bingkai bingkai = Bingkai baru(); public Launch() { // TODO Stub konstruktor yang dibuat secara otomatis } boolean crashWall(){ SnakeBody sb = frame.panel.snake.getFirst(); if((sb.x<0)||(sb.y<0)||(sb.x>=Panel.LINE)||(sb.y>=Panel.LINE)) mengembalikan nilai true; jika tidak, kembalikan salah; } batal awal(){ frame.panel.snake.add(newBody()); frame.panel.makanan = newBody(); } @Override public void run() { // TODO Metode yang dibuat secara otomatis stub if(frame.panel.snake.isEmpty()) initial(); if(frame.isAlive) if(!frame.isPause){ if(goStraight()) frame.isAlive = false; frame.repaint(); } if(crashWall()) frame.isAlive = salah; } SnakeBody newBody(){ SnakeBody sb = New SnakeBody(); boolean tumpang tindih = benar; while(tumpang tindih){ tumpang tindih =salah; sb.x = (int) (Matematika.acak()*(Panel.LINE-2)+1); sb.y = (int) (Matematika.acak()*(Panel.LINE-2)+1); if(!frame.panel.snake.isEmpty()) for(SnakeBody s : frame.panel.snake) if(sb.equals(s)) overlap =true; } kembalikan; } batal makan(SnakeBody sb){ frame.panel.snake.addFirst(sb); } boolean goStraight(){ hasil boolean = false; SnakeBody sb =new SnakeBody(frame.panel.snake.getFirst()); frame.panel.snake.removeLast(); if(frame.direction=='w') sb.turnUp(); if(frame.direction=='s') sb.turnDown(); if(frame.direction=='a') sb.turnLeft(); if(frame.direction=='d') sb.turnRight(); for(SnakeBody s : frame.panel.snake){ if(sb.equals(s)) hasil = true; } frame.panel.snake.addFirst(sb); if(sb.equals(frame.panel.food)){ if(frame.direction=='w') frame.panel.food.turnUp(); if(frame.direction=='s') frame.panel.makanan.turnDown(); if(frame.direction=='a') frame.panel.makanan.turnLeft(); if(frame.direction=='d') frame.panel.makanan.turnRight(); makan(bingkai.panel.makanan); frame.panel.makanan = newBody(); } mengembalikan hasil; } public static void main(String[] args){ // TODO Metode yang dibuat secara otomatis stub Launch timertask = new Launch(); Pengatur waktu = Pengatur Waktu baru(); timer.jadwal(timertask,0,500); } }
Panel.java
paket ular; impor java.awt.Color;impor java.awt.Graphics;impor java.util.LinkedList; impor javax.swing.JPanel; Panel kelas publik memperluas JPanel { /** * */ private static final long serialVersionUID = 1L; public LinkedList<SnakeBody> ular = LinkedList baru<SnakeBody>(); int akhir statis GARIS = 10; Makanan SnakeBody = SnakeBody baru(-99,-99); public Panel() { // TODO Stub konstruktor yang dibuat secara otomatis } public void reset(){ Snake.clear(); } public void paint(Grafik g){ g.setColor(Warna.putih); g.fillRect(0, 0, getWidth(), getHeight()); for(SnakeBody sb : ular){ g.setColor(Warna.hitam); g.drawRect(sb.x*getWidth()/LINE,sb.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE); g.setColor(Warna.oranye); g.fillRect(sb.x*getWidth()/LINE,sb.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE); } g.setColor(Warna.merah); g.fillRect(food.x*getWidth()/LINE,food.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE); }}
SnakeBody.java
paket ular; kelas Tubuh Ular { int x; ke dalam kamu; public SnakeBody() { // TODO Stub konstruktor yang dibuat secara otomatis x = 0; kamu = 0; } Tubuh Ular publik(int a,int b){ x = a; kamu = b; } SnakeBody publik(SnakeBody sb){ ini(sb.x,sb.y); } public void turnUp(){ y--; } public void turnDown(){ y++; } public void turnLeft(){ x--; } kekosongan publik belok kanan(){ x++; } boolean sama dengan(SnakeBody s){ if((x==sx)&&(y==sy)) mengembalikan nilai true; jika tidak, kembalikan salah; } }
perusahaan asuransi kesehatan了,希望能够对大家熟练掌握java有所帮助。