ตัวอย่างของบทความนี้อธิบายการใช้งานโค้ด Lianliankan ที่ใช้ Java บนพื้นฐานของการแกว่ง แบ่งปันกับทุกคนสำหรับการอ้างอิงของคุณ
รหัสฟังก์ชั่นหลักมีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ llkan;
นำเข้า javax.swing.*;
นำเข้า java.awt.*;
นำเข้า java.awt.event.*;
-
* เกมเหลียนเหลียนคาน
* @ผู้เขียน ผู้ดูแลระบบ
*17 ตุลาคม 2557
-
MainGame ระดับสาธารณะใช้ ActionListener {
JFrame mainFrame; // แผงหลัก
คอนเทนเนอร์คอนเทนเนอร์นี้
JPanel centerPanel, southPanel, northPanel; // แผงย่อย
JButton diamondsButton[][] = ใหม่ JButton[6][5];//อาร์เรย์ของปุ่มเกม
JButton exitButton, ปุ่มรีเซ็ต, ปุ่มใหม่; // ปุ่มออก, รีเซ็ตและรีสตาร์ท
JLabelเศษส่วนLable = JLabelใหม่("0"); // ป้ายกำกับเศษส่วน
JButton firstButton, SecondButton; // บันทึกปุ่มที่เลือกสองครั้งตามลำดับ
int grid[][] = new int[8][7];//บันทึกตำแหน่งปุ่มเกม
pressInformation บูลีนแบบคงที่ = false; // ตรวจสอบว่ามีการเลือกปุ่มหรือไม่
int x0 = 0, y0 = 0, x = 0, y = 0, firstMsg = 0, SecondMsg = 0, validateLV; // พิกัดตำแหน่งของปุ่มเกม
int i, j, k, n; // การควบคุมวิธีการกำจัด
โมฆะสาธารณะ init() {
mainFrame = JFrame ใหม่ ("เกม Lianliankan");
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(BorderLayout ใหม่());
centerPanel = JPanel ใหม่ ();
southPanel = JPanel ใหม่ ();
northPanel = JPanel ใหม่();
thisContainer.add(centerPanel, "ศูนย์");
thisContainer.add(แผงทิศใต้, "ทิศใต้");
thisContainer.add (แผงทิศเหนือ, "ทิศเหนือ");
centerPanel.setLayout (GridLayout ใหม่ (6, 5));
สำหรับ (int cols = 0; cols < 6; cols ++) {
สำหรับ (int แถว = 0; แถว < 5; แถว ++) {
diamondsButton[cols][rows] = JButton ใหม่ (
String.valueOf(grid[cols + 1][แถว + 1]));
diamondsButton [cols] [แถว] .addActionListener (สิ่งนี้);
centerPanel.add(เพชรปุ่ม[คอลัมน์] [แถว]);
-
-
exitButton = JButton ใหม่ ("ออก");
exitButton.addActionListener (นี้);
ResetButton = JButton ใหม่ ("รีเซ็ต");
ResetButton.addActionListener (สิ่งนี้);
newButton = new JButton ("อีกหนึ่งเกม");
newButton.addActionListener (นี้);
southPanel.add(ปุ่มออก);
southPanel.add(รีเซ็ตปุ่ม);
southPanel.add(ปุ่มใหม่);
เศษส่วนLable.setText(String.valueOf(Integer.parseInt(fractionLable
.getText())));
northPanel.add(เศษส่วนLable);
mainFrame.setBounds(280, 100, 500, 450);
mainFrame.setVisible(จริง);
-
โมฆะสาธารณะ RandomBuild () {
int สุ่ม, cols, แถว;
สำหรับ (int ฝาแฝด = 1; ฝาแฝด <= 15; ฝาแฝด++) {
สุ่ม = (int) (Math.random() * 25 + 1);
สำหรับ (int เหมือนกัน = 1; เหมือนกัน <= 2; เหมือนกัน ++) {
cols = (int) (Math.random() * 6 + 1);
แถว = (int) (Math.random() * 5 + 1);
ในขณะที่ (ตาราง [cols] [แถว] ! = 0) {
cols = (int) (Math.random() * 6 + 1);
แถว = (int) (Math.random() * 5 + 1);
-
this.grid [cols] [แถว] = สุ่ม;
-
-
-
เศษส่วนโมฆะสาธารณะ () {
เศษส่วนLable.setText(String.valueOf(Integer.parseInt(fractionLable
.getText()) + 100));
-
โมฆะสาธารณะโหลดซ้ำ () {
int save[] = int ใหม่ [30];
int n = 0, คอลัมน์, แถว;
int grid[] = int ใหม่ [8] [7];
สำหรับ (int i = 0; i <= 6; i++) {
สำหรับ (int j = 0; j <= 5; j ++) {
ถ้า (this.grid[i][j] != 0) {
บันทึก[n] = this.grid[i][j];
n++;
-
-
-
n = n - 1;
this.grid = ตาราง;
ในขณะที่ (n >= 0) {
cols = (int) (Math.random() * 6 + 1);
แถว = (int) (Math.random() * 5 + 1);
ในขณะที่ (ตาราง [cols] [แถว] ! = 0) {
cols = (int) (Math.random() * 6 + 1);
แถว = (int) (Math.random() * 5 + 1);
-
this.grid[cols][แถว] = บันทึก[n];
มะ--;
-
mainFrame.setVisible(เท็จ);
pressInformation = false; // ข้อมูลการคลิกปุ่มต้องถูกจัดประเภทเป็นข้อมูลเริ่มต้นที่นี่
เริ่มต้น();
สำหรับ (int i = 0; i < 6; i ++) {
สำหรับ (int j = 0; j <5; j ++) {
ถ้า (ตาราง [i + 1] [j + 1] == 0)
diamondsButton [i] [j] .setVisible (เท็จ);
-
-
-
โมฆะสาธารณะประมาณการEven (int placeX, int placeY, JButton bz) {
ถ้า (pressInformation == false) {
x = สถานที่X;
y = สถานที่ Y;
SecondMsg = ตาราง [x] [y];
วินาทีปุ่ม = bz;
ข้อมูลข่าวสาร = จริง;
} อื่น {
x0 = x;
y0 = ย;
firstMsg = วินาทีข่าวสาร;
firstButton = ปุ่มที่สอง;
x = สถานที่X;
y = สถานที่ Y;
SecondMsg = ตาราง [x] [y];
วินาทีปุ่ม = bz;
ถ้า (fristMsg == SecondMsg && SecondButton != firstButton) {
เสี่ยว();
-
-
-
public void xiao() { // สามารถกำจัดออกในสถานการณ์เดียวกันได้หรือไม่? วิเคราะห์อย่างรอบคอบโดยไม่ต้องแสดงความคิดเห็นทีละคน
ถ้า ((x0 == x && (y0 == y + 1 || y0 == y - 1))
||. ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { // พิจารณาว่าอยู่ติดกันหรือไม่
ลบ();
} อื่น {
สำหรับ (เจ = 0; เจ <7; เจ ++) {
if (grid[x0][j] == 0) { // พิจารณาว่าปุ่มใดถัดจากปุ่มแรกว่างเปล่า
ถ้า (y > j) { // ถ้าพิกัด Y ของปุ่มที่สองมากกว่าพิกัด Y ของปุ่มว่าง แสดงว่าปุ่มแรกอยู่ทางด้านซ้ายของปุ่มที่สอง
for (i = y - 1; i >= j; i--) { // พิจารณาว่ามีปุ่มจากด้านซ้ายของปุ่มที่สองถึงตรงกลางของปุ่มแรกหรือไม่
ถ้า (กริด[x][i] != 0) {
เค = 0;
หยุดพัก;
} อื่น {
เค = 1;
} // K=1 แสดงว่าผ่านการตรวจสอบครั้งแรกแล้ว
-
ถ้า (k == 1) {
linePassOne();
-
-
ถ้า (y < j) { // หากพิกัด Y ของปุ่มที่สองน้อยกว่าพิกัด Y ของปุ่มว่างแสดงว่าปุ่มแรกอยู่ทางด้านขวาของปุ่มที่สอง
for (i = y + 1; i <= j; i++) { // พิจารณาว่ามีปุ่มจากด้านซ้ายของปุ่มที่สองถึงตรงกลางของปุ่มแรกหรือไม่
ถ้า (กริด[x][i] != 0) {
เค = 0;
หยุดพัก;
} อื่น {
เค = 1;
-
-
ถ้า (k == 1) {
linePassOne();
-
-
ถ้า (y == เจ) {
linePassOne();
-
-
ถ้า (k == 2) {
ถ้า (x0 == x) {
ลบ();
-
ถ้า (x0 < x) {
สำหรับ (n = x0; n <= x - 1; n++) {
ถ้า (กริด[n][j] != 0) {
เค = 0;
หยุดพัก;
-
ถ้า (ตาราง [n] [j] == 0 && n == x - 1) {
ลบ();
-
-
-
ถ้า (x0 > x) {
สำหรับ (n = x0; n >= x + 1; n--) {
ถ้า (กริด[n][j] != 0) {
เค = 0;
หยุดพัก;
-
ถ้า (ตาราง [n] [j] == 0 && n == x + 1) {
ลบ();
-
-
-
-
-
สำหรับ (i = 0; i <8; i++) { // column
ถ้า (กริด[i][y0] == 0) {
ถ้า (x > i) {
สำหรับ (j = x - 1; j >= i; j--) {
ถ้า (กริด[j][y] != 0) {
เค = 0;
หยุดพัก;
} อื่น {
เค = 1;
-
-
ถ้า (k == 1) {
แถวPassOne();
-
-
ถ้า (x < i) {
สำหรับ (j = x + 1; j <= i; j++) {
ถ้า (กริด[j][y] != 0) {
เค = 0;
หยุดพัก;
} อื่น {
เค = 1;
-
-
ถ้า (k == 1) {
แถวPassOne();
-
-
ถ้า (x == ฉัน) {
แถวPassOne();
-
-
ถ้า (k == 2) {
ถ้า (y0 == y) {
ลบ();
-
ถ้า (y0 < y) {
สำหรับ (n = y0; n <= y - 1; n++) {
ถ้า (กริด[i][n] != 0) {
เค = 0;
หยุดพัก;
-
ถ้า (ตาราง [i] [n] == 0 && n == y - 1) {
ลบ();
-
-
-
ถ้า (y0 > y) {
สำหรับ (n = y0; n >= y + 1; n--) {
ถ้า (กริด[i][n] != 0) {
เค = 0;
หยุดพัก;
-
ถ้า (ตาราง [i] [n] == 0 && n == y + 1) {
ลบ();
-
-
-
-
-
-
-
โมฆะสาธารณะ linePassOne() {
if (y0 > j) { // ปุ่มแรกอยู่ทางด้านซ้ายพร้อมกับปุ่มว่าง
for (i = y0 - 1; i >= j; i--) { // พิจารณาว่ามีปุ่มอยู่ระหว่างปุ่มแรกกับปุ่มว่างด้านซ้ายหรือไม่
ถ้า (ตาราง[x0][i] != 0) {
เค = 0;
หยุดพัก;
} อื่น {
เค = 2;
} // K=2 แสดงว่าผ่านการตรวจสอบครั้งที่สองแล้ว
-
-
if (y0 < j) { // ปุ่มแรกอยู่ระหว่างปุ่มว่างและปุ่มที่สอง
สำหรับ (i = y0 + 1; i <= j; i++) {
ถ้า (ตาราง[x0][i] != 0) {
เค = 0;
หยุดพัก;
} อื่น {
เค = 2;
-
-
-
-
โมฆะสาธารณะ rowPassOne() {
ถ้า (x0 > i) {
สำหรับ (j = x0 - 1; j >= i; j--) {
ถ้า (กริด[j][y0] != 0) {
เค = 0;
หยุดพัก;
} อื่น {
เค = 2;
-
-
-
ถ้า (x0 <ฉัน) {
สำหรับ (j = x0 + 1; j <= i; j++) {
ถ้า (กริด[j][y0] != 0) {
เค = 0;
หยุดพัก;
} อื่น {
เค = 2;
-
-
-
-
โมฆะสาธารณะลบ () {
firstButton.setVisible (เท็จ);
SecondButton.setVisible (เท็จ);
เศษส่วน();
ข้อมูลข่าวสาร = เท็จ;
เค = 0;
ตาราง[x0][y0] = 0;
ตาราง[x][y] = 0;
-
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
ถ้า (e.getSource() == ปุ่มใหม่) {
int grid[] = int ใหม่ [8] [7];
this.grid = ตาราง;
สุ่มสร้าง();
mainFrame.setVisible(เท็จ);
ข้อมูลข่าวสาร = เท็จ;
เริ่มต้น();
-
ถ้า (e.getSource() == exitButton)
System.ออก(0);
ถ้า (e.getSource() == รีเซ็ตปุ่ม)
โหลดใหม่();
สำหรับ (int cols = 0; cols < 6; cols ++) {
สำหรับ (int แถว = 0; แถว < 5; แถว ++) {
ถ้า (e.getSource() == diamondsButton[cols][rows])
ประมาณการคู่ (cols + 1, แถว + 1, diamondsButton [cols] [แถว]);
-
-
-
โมฆะคงที่สาธารณะ main (String [] args) {
MainGame mg = ใหม่ MainGame();
มก.สุ่มสร้าง();
mg.init();
-
-
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน