废话不多说,直接奉上代码:
เฟรม.ชวา
งูแพ็คเกจ; นำเข้า java.awt.Graphics; นำเข้า java.awt.Menu; นำเข้า java.awt.MenuBar; นำเข้า java.awt.MenuItem; นำเข้า java.awt.event.ActionEvent; นำเข้า java.awt.event.ActionListener; นำเข้า java.awt .event.KeyEvent;นำเข้า java.awt.event.KeyListener; นำเข้า javax.swing.JFrame; เฟรมคลาสสาธารณะขยาย JFrame ใช้ KeyListener { /** * */ Boolean isAlive; บูลีน isPause; แผงแผง; ทิศทางของตัวละคร serialVersionUID ยาวสุดท้ายแบบคงที่ส่วนตัว = 1L; public Frame () {// TODO ตัวสร้างต้นขั้วที่สร้างอัตโนมัติ setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); กำหนดขนาด(300,300); addKeyListener(นี่); แผง = แผงใหม่ (); เพิ่ม(แผง); setVisible (จริง); มีชีวิตอยู่ = จริง; isPause = เท็จ; ทิศทาง = ตัวละครใหม่ ('d'); MenuBar menuBar = แถบเมนูใหม่(); เมนูเมนู = เมนูใหม่ ("เมนู"); MenuItem รีเซ็ต = MenuItem ใหม่ ("เกมใหม่"); MenuItem หยุดชั่วคราว = MenuItem ใหม่ ("หยุดชั่วคราว"); Pause.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO วิธีการสร้างอัตโนมัติ stub if(!isPause) isPause= true; else isPause= false; } }); reset.addActionListener (ใหม่ ActionListener () { @ แทนที่สาธารณะ โมฆะ actionPerformed (ActionEvent e) { // TODO วิธีสร้างอัตโนมัติ stub รีเซ็ต (); } }); เมนู.เพิ่ม(รีเซ็ต); เมนู.เพิ่ม(หยุดชั่วคราว); menuBar.add(เมนู); setMenuBar(แถบเมนู); } รีเซ็ตโมฆะสาธารณะ () { แผงรีเซ็ต (); มีชีวิตอยู่ = จริง; } @Override public void keyTyped(KeyEvent e) { // TODO auto-generated method stub } @Override public void keyPressed(KeyEvent e) { // TODO auto-generated method stub if(e.getKeyCode()==KeyEvent.VK_UP ) ทิศทาง = 'w'; ถ้า (e.getKeyCode()==KeyEvent.VK_DOWN) ทิศทาง = 's'; ถ้า (e.getKeyCode()==KeyEvent.VK_LEFT) ทิศทาง = 'a'; ถ้า (e.getKeyCode()==KeyEvent.VK_RIGHT) ทิศทาง = 'd'; } @Override public void keyReleased(KeyEvent e) { // TODO stub วิธีการสร้างอัตโนมัติ } สีโมฆะสาธารณะ (กราฟิก g){ panel.repaint(); -
Launch.java
งูแพ็คเกจ; นำเข้า java.util.Timer; นำเข้า java.util.TimerTask; การเปิดตัวคลาสสาธารณะขยาย TimerTask { Frame frame = new Frame (); การเปิดตัวสาธารณะ () { // TODO ต้นขั้วคอนสตรัคเตอร์ที่สร้างขึ้นอัตโนมัติ } บูลีน crashWall () { SnakeBody sb = frame.panel.snake.getFirst (); if((sb.x<0)||(sb.y<0)||(sb.x>=Panel.LINE)||(sb.y>=Panel.LINE)) คืนค่าจริง; มิฉะนั้นจะส่งคืนเท็จ } เป็นโมฆะเริ่มต้น () { frame.panel.snake.add (newBody ()); frame.panel.food = ตัวใหม่ (); } @แทนที่ public void run() { // TODO stub เมธอดที่สร้างอัตโนมัติ if(frame.panel.snake.isEmpty()) Initial(); if(frame.isAlive) if(!frame.isPause){ if(goStraight()) frame.isAlive = false; กรอบ.ทาสีใหม่(); } ถ้า(crashWall()) frame.isAlive = false; } SnakeBody newBody(){ SnakeBody sb = ใหม่ SnakeBody(); บูลีนทับซ้อนกัน = จริง; ในขณะที่ (ทับซ้อนกัน) { ทับซ้อนกัน = false; sb.x = (int) (Math.random()*(Panel.LINE-2)+1); sb.y = (int) (Math.random()*(Panel.LINE-2)+1); if(!frame.panel.snake.isEmpty()) for(SnakeBody s : frame.panel.snake) ถ้า(sb.equals(s)) ทับซ้อนกัน =true; } กลับ sb; } เป็นโมฆะกิน (SnakeBody sb) { frame.panel.snake.addFirst (sb); } บูลีน goStraight(){ ผลลัพธ์บูลีน = เท็จ; SnakeBody sb = SnakeBody ใหม่ (frame.panel.snake.getFirst()); frame.panel.snake.removeLast(); ถ้า(frame.direction=='w') sb.turnUp(); ถ้า(frame.direction=='s') sb.turnDown(); ถ้า(frame.direction=='a') sb.turnLeft(); ถ้า(frame.direction=='d') sb.turnRight(); สำหรับ (SnakeBody s : frame.panel.snake){ ถ้า (sb.equals(s)) ผลลัพธ์ = true; } frame.panel.snake.addFirst(sb); if(sb.equals(frame.panel.food)){ if(frame.direction=='w') frame.panel.food.turnUp(); ถ้า(frame.direction=='s') frame.panel.food.turnDown(); ถ้า(frame.direction=='a') frame.panel.food.turnLeft(); ถ้า (frame.direction=='d') frame.panel.food.turnRight(); กิน(frame.panel.food); frame.panel.food = ตัวใหม่ (); } ส่งคืนผลลัพธ์; } โมฆะสาธารณะคงที่ main (String [] args) {// TODO stub เมธอดที่สร้างอัตโนมัติ งานจับเวลาการเปิดตัว = การเปิดตัวใหม่ (); ตัวจับเวลา ตัวจับเวลา = ตัวจับเวลาใหม่ (); timer.schedule (งานจับเวลา, 0,500); -
แผง.java
งูแพ็คเกจ; นำเข้า java.awt.Color; นำเข้า java.awt.Graphics; นำเข้า java.util.LinkedList; นำเข้า javax.swing.JPanel; แผงคลาสสาธารณะขยาย JPanel { /** * */ ส่วนตัวแบบคงที่สุดท้ายแบบยาว serialVersionUID = 1L; LinkedList สาธารณะ <SnakeBody> งู = LinkedList ใหม่ <SnakeBody>(); int สุดท้ายคงที่ LINE = 10; อาหาร SnakeBody = SnakeBody ใหม่ (-99,-99); แผงสาธารณะ () { // TODO ต้นขั้วคอนสตรัคเตอร์ที่สร้างขึ้นอัตโนมัติ } การรีเซ็ตโมฆะสาธารณะ () { Snake.clear (); } สีโมฆะสาธารณะ (กราฟิก g) { g.setColor (Color.white); g.fillRect(0, 0, getWidth(), getHeight()); สำหรับ (SnakeBody sb : งู){ g.setColor(Color.black); g.drawRect(sb.x*getWidth()/LINE,sb.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE); g.setColor(สี.สีส้ม); g.fillRect(sb.x*getWidth()/LINE,sb.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE); } g.setColor(สี.สีแดง); g.fillRect(food.x*getWidth()/LINE,food.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE); -
SnakeBody.java
งูแพ็คเกจ; คลาส SnakeBody { int x; อินท์ วาย; สาธารณะ SnakeBody () { // TODO สตับคอนสตรัคเตอร์ที่สร้างขึ้นอัตโนมัติ x = 0; ย = 0; } สาธารณะ SnakeBody (int a, int b) { x = a; ย = ข; } สาธารณะ SnakeBody (SnakeBody sb) { นี้ (sb.x, sb.y); } สาธารณะโมฆะการพลิกกลับ (){ y--; } การเทิร์นดาวน์สาธารณะเป็นโมฆะ(){ y++; } โมฆะสาธารณะ TurnLeft(){ x--; } โมฆะสาธารณะ TurnRight(){ x++; } บูลีนเท่ากับ(SnakeBody s){ if((x==sx)&&(y==sy)) คืนค่าจริง; มิฉะนั้นจะส่งคืนเท็จ -
以上所述就是本文给大家分享的贪吃蛇的全部代码了,希望能够对大家熟练掌握javaมี所帮助。