動手用JAVA做個小遊戲--貪吃蛇
阿新 • • 發佈:2019-01-02
轉眼在大學蹲了快三個春秋,在這幾年裡我可謂是經歷過了大學的“風風雨雨”,逃課、泡女、通宵打機......種種的種種!還有一年就畢業了,回首過去,說實在的還真有點後悔,畢竟看到別人被大公司提前錄用而自己還在碌碌無為在此我想給那些剛進大學的朋友一個忠告:大學真的真的不是給你來玩的,高中老師說的話都是騙你的,真正能學到的生存技能都在大學裡面獲得的,大學這幾年並沒有你想像的那麼長,稍縱即逝的,好好珍惜吧!
好吧,嘮叨就發到這,下面進入主題:
之所以用JAVA來寫是因為JAVA是一門典型的面嚮物件語言並且其能跨平臺執行這點對遊戲來說是最大的優勢。(其實最主要的原因是我準備期末考試了,想溫習一下)。
下面我們就開始吧!
首先來建立一個環境視窗即給貪吃蛇活動的院子:
<pre name="code" class="java"><pre name="code" class="java">package snake; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Yard extends javax.swing.JFrame { String player; PaintThread paintThread = new PaintThread(); private boolean gameOver = false; public static final int ROWS = 30; public static final int COLS = 30; public static final int BLOCK_SIZE = 15; private final Font fontGameOver = new Font("宋體", Font.BOLD, 50); private final Font fontPlayer = new Font("宋體", Font.BOLD, 20); private int score = 0; Snake s = new Snake(this); Egg e = new Egg(); Image offScreenImage = null; public Yard(String player) { this.player = player; } Yard() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } public void launch() { this.setLocation(200, 200); this.setSize(COLS * BLOCK_SIZE, ROWS * BLOCK_SIZE); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); this.setVisible(true); this.addKeyListener(new KeyMonitor()); new Thread(paintThread).start(); } public static void main(String[] args) { // new Yard().launch(); } public void stop() { gameOver = true; } @Override public void paint(Graphics g) { Color c = g.getColor(); g.setColor(Color.GREEN); g.fillRect(0, 0, COLS * BLOCK_SIZE, ROWS * BLOCK_SIZE); g.setColor(Color.GREEN); for (int i = 1; i < ROWS; i++) { g.drawLine(0, BLOCK_SIZE * i, COLS * BLOCK_SIZE, BLOCK_SIZE * i); } for (int i = 1; i < COLS; i++) { g.drawLine(BLOCK_SIZE * i, 0, BLOCK_SIZE * i, BLOCK_SIZE * ROWS); } g.setColor(Color.blue); g.setFont(fontPlayer); g.drawString("score:" + score, 10, 60); g.drawString(player, 10, 50); if (gameOver) { // g.setFont(fontGameOver); // g.drawString("遊戲結束", 120, 180); paintThread.pause(); XMLControl control = new XMLControl(); String No1 = control.getOption("Score1"); String No2 = control.getOption("Score2"); String No3 = control.getOption("Score3"); if (No3.length() != 0) { if (score > Integer.parseInt(No3)) { if (score <= Integer.parseInt(No2)) { control.ChangeOption("No3", player); control.ChangeOption("Score3", String.valueOf(score)); } else if (score <= Integer.parseInt(No1)) { control.ChangeOption("No2", player); control.ChangeOption("Score2", String.valueOf(score)); } else { control.ChangeOption("No1", player); control.ChangeOption("Score1", String.valueOf(score)); } } } else if (No2.length() != 0) { if (score <= Integer.parseInt(No2)) { control.ChangeOption("No3", player); control.ChangeOption("Score3", String.valueOf(score)); } else if (score <= Integer.parseInt(No1)) { control.ChangeOption("No2", player); control.ChangeOption("Score2", String.valueOf(score)); } else { control.ChangeOption("No1", player); control.ChangeOption("Score1", String.valueOf(score)); } }else if(No1.length() != 0){ if(score <= Integer.parseInt(No1)){ control.ChangeOption("No2", player); control.ChangeOption("Score2", String.valueOf(score)); }else{ control.ChangeOption("No1", player); control.ChangeOption("Score1", String.valueOf(score)); } }else{ control.ChangeOption("No1", player); control.ChangeOption("Score1", String.valueOf(score)); } new GameOver(); dispose(); } g.setColor(c); s.eat(e); e.draw(g); s.draw(g); } @Override public void update(Graphics g) { if (offScreenImage == null) { offScreenImage = this.createImage(COLS * BLOCK_SIZE, ROWS * BLOCK_SIZE); } Graphics gOff = offScreenImage.getGraphics(); paint(gOff); g.drawImage(offScreenImage, 0, 0, null); } private void setColor(Color blue) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } private class PaintThread implements Runnable { private boolean running = true; private boolean pause = false; public void run() { while (running) { if (pause) { continue; } else { repaint(); } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } public void pause() { this.pause = true; } public void start() { this.pause = false; } public void reStart() { this.pause = false; s = new Snake(Yard.this); gameOver = false; } public void gameOver() { running = false; } } private class KeyMonitor extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_F2) { paintThread.start(); } else if (key == KeyEvent.VK_F1) { paintThread.pause(); } else if (key == KeyEvent.VK_F3) { paintThread.reStart(); } s.keyPressed(e); } } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
package snake; import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.KeyEvent; public class Snake { private Node head = null; private Node tail = null; private int size = 0; private Node n = new Node(20, 30, Dir.L); private Yard y; public Snake(Yard y) { head = n; tail = n; size = 1; this.y = y; } public void addToTail() { Node node = null; switch(tail.dir) { case L : node = new Node(tail.row, tail.col + 1, tail.dir); break; case U : node = new Node(tail.row + 1, tail.col, tail.dir); break; case R : node = new Node(tail.row, tail.col - 1, tail.dir); break; case D : node = new Node(tail.row - 1, tail.col, tail.dir); break; } tail.next = node; node.prev = tail; tail = node; size ++; } public void addToHead() { Node node = null; switch(head.dir) { case L : node = new Node(head.row, head.col - 1, head.dir); break; case U : node = new Node(head.row - 1, head.col, head.dir); break; case R : node = new Node(head.row, head.col + 1, head.dir); break; case D : node = new Node(head.row + 1, head.col, head.dir); break; } node.next = head; head.prev = node; head = node; size ++; } public void draw(Graphics g) { if(size <= 0) return; move(); for(Node n = head; n != null; n = n.next) { n.draw(g); } } private void move() { addToHead(); deleteFromTail(); checkDead(); } private void checkDead() { if(head.row < 2 || head.col < 0 || head.row > Yard.ROWS || head.col > Yard.COLS) { y.stop(); } for(Node n = head.next; n != null; n = n.next) { if(head.row == n.row && head.col == n.col) { y.stop(); } } } private void deleteFromTail() { if(size == 0) return; tail = tail.prev; tail.next = null; } private class Node { int w = Yard.BLOCK_SIZE; int h = Yard.BLOCK_SIZE; int row , col; Dir dir = Dir.L; Node next = null; Node prev = null; Node(int row, int col, Dir dir) { this.row = row; this.col = col; this.dir = dir; } void draw(Graphics g) { Color c = g.getColor(); g.setColor(Color.ORANGE); g.fillRect(Yard.BLOCK_SIZE * col, Yard.BLOCK_SIZE * row, w, h); g.setColor(c); } } public void eat(Egg e) { if(this.getRect().intersects(e.getRect())) { e.reAppear(); this.addToHead(); y.setScore(y.getScore() + 1); } } private Rectangle getRect() { return new Rectangle(Yard.BLOCK_SIZE * head.col, Yard.BLOCK_SIZE * head.row, head.w, head.h); } public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); switch(key) { case KeyEvent.VK_LEFT : if(head.dir != Dir.R) head.dir = Dir.L; break; case KeyEvent.VK_UP : if(head.dir != Dir.D) head.dir = Dir.U; break; case KeyEvent.VK_RIGHT : if(head.dir != Dir.L) head.dir = Dir.R; break; case KeyEvent.VK_DOWN : if(head.dir != Dir.U) head.dir = Dir.D; break; } } }
package snake;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.util.Random;
public class Egg {
int row, col;
int w = Yard.BLOCK_SIZE;
int h = Yard.BLOCK_SIZE;
private static Random r = new Random();
private Color color = Color.BLUE;
public Egg(int row, int col) {
this.row = row;
this.col = col;
}
public Egg() {
this(r.nextInt(Yard.ROWS-2) + 2, r.nextInt(Yard.COLS));
}
public void reAppear() {
this.row = r.nextInt(Yard.ROWS-2) + 2;
this.col = r.nextInt(Yard.COLS);
}
public Rectangle getRect() {
return new Rectangle(Yard.BLOCK_SIZE * col, Yard.BLOCK_SIZE * row, w, h);
}
public void draw(Graphics g) {
Color c = g.getColor();
g.setColor(color);
g.fillOval(Yard.BLOCK_SIZE * col, Yard.BLOCK_SIZE * row, w, h);
g.setColor(c);
if(color == Color.BLUE) color = Color.RED;
else color = Color.BLUE;
}
public int getCol() {
return col;
}
public void setCol(int col) {
this.col = col;
}
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
}
最後還建兩個窗體,一個遊戲開始介面,一個遊戲結束介面,其中開始介面包含了使用者名錄入,並將其傳遞給主遊戲以及結束介面,而結束介面則實現分數的統計和排名
package snake;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JOptionPane;
import snake.XMLControl;
import snake.Yard;
public class snakeFrame extends javax.swing.JFrame {
private int xOld;
private int yOld;
/**
* 新建表框 snakeFrame
*/
public snakeFrame() {
initMove();
setUndecorated(true);
initComponents();
content.setText(" 遊戲說明:\n"
+ " 歡迎進入本遊戲,本遊戲是以傳統貪吃蛇\n"
+ " 為遊戲背景,遊戲動感好,有一定的可玩性。\n"
+" 操作為通過鍵盤上的上下左右鍵來操縱小蛇。\n"
+ " 最後祝遊戲愉快!!");
Dimension dim = getToolkit().getScreenSize();
Rectangle abounds = getBounds();
setLocation((dim.width - abounds.width) / 2, (dim.height - abounds.height) / 2);
setVisible(true);
new XMLControl();
}
//初始化滑鼠移動
final void initMove() {
this.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
xOld = e.getX();
yOld = e.getY();
}
});
this.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
int xOnScreen = e.getXOnScreen();
int yOnScreen = e.getYOnScreen();
int xx = xOnScreen - xOld;
int yy = yOnScreen - yOld;
setLocation(xx, yy);
}
});
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
player = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
content = new javax.swing.JTextArea();
OK_bt = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBackground(new java.awt.Color(153, 0, 0));
jButton1.setBackground(new java.awt.Color(255, 51, 0));
jButton1.setText("X");
jButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel2.setBackground(new java.awt.Color(255, 51, 102));
jPanel2.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
jPanel3.setBackground(new java.awt.Color(255, 204, 255));
jPanel3.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 3, true));
jLabel1.setFont(new java.awt.Font("宋體", 0, 24)); // NOI18N
jLabel1.setForeground(new java.awt.Color(102, 102, 0));
jLabel1.setText("玩家:");
jLabel1.setToolTipText("");
player.setFont(new java.awt.Font("宋體", 0, 24)); // NOI18N
player.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
content.setEditable(false);
content.setBackground(new java.awt.Color(255, 204, 204));
content.setColumns(20);
content.setFont(new java.awt.Font("宋體", 0, 14)); // NOI18N
content.setRows(5);
jScrollPane1.setViewportView(content);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(player)))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 121, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(player, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
OK_bt.setBackground(new java.awt.Color(255, 204, 51));
OK_bt.setForeground(new java.awt.Color(0, 153, 153));
OK_bt.setText("確定");
OK_bt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
OK_btActionPerformed(evt);
}
});
jLabel5.setBackground(new java.awt.Color(255, 255, 255));
jLabel5.setFont(new java.awt.Font("宋體", 1, 24)); // NOI18N
jLabel5.setForeground(new java.awt.Color(255, 255, 0));
jLabel5.setText("開 始 遊 戲");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(OK_bt, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap(98, Short.MAX_VALUE)
.addComponent(jLabel5)
.addGap(93, 93, 93))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(OK_bt, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
System.exit(0);
}
@SuppressWarnings("empty-statement")
private void OK_btActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String play = player.getText();
if(play.length() != 0){
new Yard(play).launch();
dispose();
}else{
JOptionPane.showMessageDialog(this, "請先輸入玩家再開始遊戲!!", "提示!", JOptionPane.WARNING_MESSAGE);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(snakeFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(snakeFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(snakeFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(snakeFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new snakeFrame().setVisible(true);
}
});
}
package snake;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
public class GameOver extends javax.swing.JFrame {
private int xOld;
private int yOld;
private String play;
public GameOver() {
initMove();
setUndecorated(true);
initComponents();
Dimension dim = getToolkit().getScreenSize();
Rectangle abounds = getBounds();
setLocation((dim.width - abounds.width) / 2, (dim.height - abounds.height) / 2);
setVisible(true);
XMLControl control = new XMLControl();
no1.setText(control.getOption("No1") + ":" + control.getOption("Score1"));
no2.setText(control.getOption("No2") + ":" + control.getOption("Score2"));
no3.setText(control.getOption("No3") + ":" + control.getOption("Score3"));
}
//初始化滑鼠移動
final void initMove() {
this.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
xOld = e.getX();
yOld = e.getY();
}
});
this.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
int xOnScreen = e.getXOnScreen();
int yOnScreen = e.getYOnScreen();
int xx = xOnScreen - xOld;
int yy = yOnScreen - yOld;
setLocation(xx, yy);
}
});
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton2 = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
no1 = new javax.swing.JLabel();
no2 = new javax.swing.JLabel();
no3 = new javax.swing.JLabel();
jButton3 = new javax.swing.JButton();
jButton2.setText("jButton2");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBackground(new java.awt.Color(153, 153, 153));
jButton1.setBackground(new java.awt.Color(255, 51, 51));
jButton1.setText("X");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel2.setBackground(new java.awt.Color(255, 255, 204));
jLabel1.setBackground(new java.awt.Color(0, 255, 153));
jLabel1.setFont(new java.awt.Font("宋體", 1, 36)); // NOI18N
jLabel1.setForeground(new java.awt.Color(102, 102, 102));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("遊 戲 結 束");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 265, Short.MAX_VALUE)
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 70, Short.MAX_VALUE)
.addContainerGap())
);
jPanel3.setBackground(new java.awt.Color(255, 255, 204));
jLabel2.setBackground(new java.awt.Color(102, 102, 0));
jLabel2.setFont(new java.awt.Font("宋體", 1, 14)); // NOI18N
jLabel2.setForeground(new java.awt.Color(102, 102, 0));
jLabel2.setText("排行榜:");
no1.setBackground(new java.awt.Color(102, 102, 0));
no1.setFont(new java.awt.Font("微軟雅黑", 0, 14)); // NOI18N
no2.setBackground(new java.awt.Color(102, 102, 0));
no2.setFont(new java.awt.Font("微軟雅黑", 0, 14)); // NOI18N
no3.setBackground(new java.awt.Color(102, 102, 0));
no3.setFont(new java.awt.Font("微軟雅黑", 0, 14)); // NOI18N
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(no2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(no1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(no3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(no1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(no2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(no3)
.addContainerGap(61, Short.MAX_VALUE))
);
jButton3.setBackground(new java.awt.Color(255, 102, 0));
jButton3.setForeground(new java.awt.Color(0, 153, 153));
jButton3.setText("再來");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jButton1))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jButton3)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addComponent(jButton3)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
new snakeFrame();
dispose();
}
public static void main(String args[]) {
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(GameOver.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(GameOver.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(GameOver.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(GameOver.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
}
});
}