1. 程式人生 > >Java 2048 小遊戲 原始碼

Java 2048 小遊戲 原始碼



import java.awt.Color;
import java.awt.EventQueue;
//import java.awt.BorderLayout;
//import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.*;
import java.util.Random;
import javax.swing.BorderFactory;
import javax.swing.Icon;
//import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
//import javax.swing.border.*;
  1. import javax.swing.JTextField;
public class Copy2048 extends JFrame{
private JPanel scoresPane;//分數面板
private JPanel mainPane;//主面板
private JLabel labelMaxScores ;//最高分
private JLabel labelScores;//分數
private JLabel tips;        //提示操作標籤
private JTextField textMaxScores;//最高分文字框
private JLabel textScores;//分數文字框
private JLabel[][] texts;//方塊標籤二維陣列
private Icon icon2;
private int times = 16;//記錄剩餘空方塊數目
private int scores = 0;   //記錄分數
private int l1,l2,l3,l4;  //用於判斷遊戲是否失敗
Font font = new Font("", Font.BOLD,14);//設定分數面板字型型別和大小
Font font2 = new Font("", Font.BOLD,30);//設定主面板字型型別和大小
Random random = new Random();                  //獲取隨機數

public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
try{
Copy2048 frame = new Copy2048();
frame.setVisible(true);
//Thread thread = new Thread(frame);
//thread.start();
}
catch(Exception e1){
e1.printStackTrace();
}
}
});
}
/**
* 構造方法
*/
public Copy2048(){
super();
setResizable(false);               //禁止調整窗體大小
getContentPane().setLayout(null);//設定空佈局
setBounds(500, 50, 500, 615);//設定介面位置和大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定關閉
setTitle("2048PC版");                  //設定窗體標題

scoresPane = new JPanel();//建立分數顯示面板
scoresPane.setBackground(Color.green); //設定分數顯示面板的背景色
scoresPane.setBounds(20, 20, 460, 40);//設定分數面板位置和大小
scoresPane.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.YELLOW));//設定得分面板的邊框粗細和顏色
getContentPane().add(scoresPane);//將得分面板新增到窗體
scoresPane.setLayout(null);   //設定面板空佈局

labelMaxScores = new JLabel("最高分:");//最高分標籤
labelMaxScores.setFont(font);   //設定字型型別和大小
labelMaxScores.setBounds(10, 5, 50, 30);//設定最高分標籤的位置和尺寸
scoresPane.add(labelMaxScores);       //將最高分標籤新增到得分容器中

textMaxScores = new JTextField("暫不可用");//最高得分標籤
textMaxScores.setBounds(60, 5, 150, 30);//設定最高分文字框的位置和尺寸
textMaxScores.setFont(font);//設定最高分字型
textMaxScores.setEditable(false);    //設定為不可編輯
scoresPane.add(textMaxScores);//將最高分標籤新增到分數面板中

labelScores = new JLabel("得    分:");
labelScores.setFont(font);//設定分數標籤字型型別和大小
labelScores.setBounds(240, 5, 50, 30);//設定分數標籤位置和大小
scoresPane.add(labelScores);//將得分標籤新增到分數面板中

textScores = new JLabel(String.valueOf(scores));//將計算所得分數放到分數文字框
textScores.setFont(font);//設定分數字體
textScores.setBounds(290, 5, 150, 30);//設定分數位置和大小
scoresPane.add(textScores);//將得分文字框新增到分數面板中

mainPane = new JPanel();   //建立遊戲主面板
mainPane.setBounds(20, 70, 460, 500);//設定主面板位置和尺寸

this.getContentPane().add(mainPane); //新增遊戲主面板到容器中
mainPane.setLayout(null);//設定空佈局

texts = new  JLabel[4][4];//建立方塊標籤二維陣列
for(int i = 0; i < 4; i++){//遍歷陣列
for(int j = 0; j < 4; j++){
texts[i][j] = new JLabel();   //建立標籤
texts[i][j].setFont(font2);//設定方塊字型
texts[i][j].setHorizontalAlignment(SwingConstants.CENTER);//設定方塊內容居中對齊
texts[i][j].setText("");//設定方塊內容為空
texts[i][j].setBounds(120 * j, 120 * i, 100, 100);//設定方塊的大小位置
setColor(i, j, "");//設定顏色為空
texts[i][j].setOpaque(true);                                  //設定控制元件不透明
texts[i][j].setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.green));//設定方塊邊框顏色
mainPane.add(texts[i][j]);  //將建立的方塊標籤放在遊戲主面板
}
}

tips = new JLabel("Tips:使用上、下、左、右鍵或者W、S、A、D鍵控制");//建立提示標籤
tips.setFont(font);//設定提示標籤字型
tips.setBounds(60,480,400,20);//設定提示標籤位置和大小
mainPane.add(tips);//將提示標籤放到主面板

textMaxScores.addKeyListener(new KeyAdapter(){//為最高分標籤新增按鍵監聽器
public void keyPressed(  KeyEvent e){
do_label_keyPressed(e);//呼叫時間處理方法
}
});

Create2(); //最開始開啟遊戲隨機出現的兩個2
Create2(); //最開始開啟遊戲隨機出現的兩個2
}

/**
* 按鍵輸入事件的處理方法
* @param e
*/
protected  void do_label_keyPressed(final KeyEvent e){             
int code = e.getKeyCode();//獲取按鍵程式碼
int a ;        //a 的引入是為了防止連加的情況出現
String str ;
String str1;
int num;
switch(code){ //按鍵的四種情況
case KeyEvent.VK_LEFT:
case KeyEvent.VK_A:  //如果按鍵程式碼是左方向鍵或者A鍵
for(int i = 0; i < 4; i++){
a = 5;
for(int k = 0; k < 3; k++){
for(int j = 1; j < 4; j++){     //遍歷16個方塊
str = texts[i][j].getText();     //獲取當前方塊標籤文字字元
str1 = texts[i][j-1].getText();     //獲取當前方塊左邊的一個標籤文字字元

if(str1.compareTo("") == 0){//如果左邊方塊文字為空字元
texts[i][j-1].setText(str);//方塊左移
setColor(i, j-1,str);//設定顏色
texts[i][j].setText("");//當前方塊字元置空
setColor(i, j, "");//設定當前方塊顏色
}
else if((str.compareTo(str1) == 0) && (j !=a) && (j != a-1)){//避免連加
num  = Integer.parseInt(str);//獲取字串轉化為整型
scores += num;//加分
times ++; //空塊加一
str = String.valueOf(2 * num);//計算左邊方塊最終結果
texts[i][j-1].setText(str);//左邊方塊文字字元變為兩方塊之和
setColor(i, j-1, str);//設定顏色
texts[i][j].setText("");//當前方塊字元置空
setColor(i, j, "");//設定當前方塊顏色
a = j;
}
}
}
}
l1 = 1; //用於判斷遊戲是否失敗
Create2();
break;
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_D:
for(int i = 0; i < 4; i ++){
a = 5;
for(int k = 0; k < 3; k++){
for(int j = 2; j >= 0; j--){
str = texts[i][j].getText();
str1 = texts[i][j + 1].getText();

if(str1.compareTo("") == 0){
texts[i][j + 1].setText(str);
setColor(i, j+1, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && j !=a && j != a+ 1){
num  = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i][j + 1].setText(str);
setColor(i, j+1, str);
texts[i][j].setText("");
setColor(i, j, "");
a = j;
}
}
}
}
l2 = 1;
Create2();
break;
case KeyEvent.VK_UP:
case KeyEvent.VK_W:
for(int j = 0; j < 4; j++){
a = 5;
for(int k = 0; k < 3; k++){
for(int i = 1; i < 4; i++){
str = texts[i][j].getText();
str1 = texts[i - 1][j].getText();

if(str1.compareTo("") == 0){
texts[i - 1][j].setText(str);
setColor(i-1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && i != a && i != a -1){
num  = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i - 1][j].setText(str);
setColor(i-1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
a = i;
}
}
}
}
l3 =1;
Create2();
break;
case KeyEvent.VK_DOWN:
case KeyEvent.VK_S:
for(int j = 0; j < 4; j ++){
a = 5;
for(int k = 0; k < 5; k++){
for(int i = 2; i >= 0; i--){
str = texts[i][j].getText();
str1 = texts[i + 1][j].getText();

if(str1.compareTo("") == 0){
texts[i + 1][j].setText(str);
setColor(i+1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && i != a && i != a + 1){
num  = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i + 1][j].setText(str );
setColor(i+1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
a = i;
}
}
}
}
l4 = 1;
Create2();
break;
default:
break;
}
textScores.setText(String.valueOf(scores));
}

/**
* 在隨機位置產生一個2號方塊的方法
* @param i,j
*/
public void Create2(){
int i ,j;
boolean r = true;
String str;

if(times > 0){
while(r){
i = random.nextInt(4);//隨機獲取整型0-4(列數)
j = random.nextInt(4);//隨機獲取整型0-4(行數)
str = texts[i][j].getText();//獲取該隨機標籤文字
if((str.compareTo("") == 0)){//如果文字為空
texts[i][j].setIcon(icon2);
texts[i][j].setText("2");//將其文字內容設為2
setColor(i, j, "2");//設定顏色

times --; //空塊數目減少
r = false;
l1 = l2 = l3 = l4 = 0;//重置
}
}
}
//l1到l4同時被鍵盤賦值為1說明任何方向鍵都不能產生新的數字2,說明遊戲失敗
else if(l1 >0 && l2 >0 && l3 > 0 && l4 > 0){
tips.setText("                            GAME OVER !");

}
}

/**
* 設定標籤顏色
* @param i , j ,str
*/
public void setColor(int i, int j, String str){
switch(str){
case "2":
texts[i][j].setBackground(Color.yellow);
break;
case "4":
texts[i][j].setBackground(Color.red);
break;
case "8":
texts[i][j].setBackground(Color.pink);
break;
case "16":
texts[i][j].setBackground(Color.orange);
break;
case "32":
texts[i][j].setBackground(Color.magenta);
break;
case "64":
texts[i][j].setBackground(Color.LIGHT_GRAY);
break;
case "128":
texts[i][j].setBackground(Color.green);
break;
case "256":
texts[i][j].setBackground(Color.gray);
break;
case "512":
texts[i][j].setBackground(Color.DARK_GRAY);
break;
case "1024":
texts[i][j].setBackground(Color.cyan);
break;
case "2048":
texts[i][j].setBackground(Color.blue);
break;
//case "":
//case "4096":
//texts[i][j].setBackground(Color.white);
//break;
default:
texts[i][j].setBackground(Color.white);
break;
}


}


}



import java.awt.Color;
import java.awt.EventQueue;
//import java.awt.BorderLayout;
//import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.*;
import java.util.Random;


import javax.swing.BorderFactory;
import javax.swing.Icon;
//import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
//import javax.swing.border.*;
import javax.swing.JTextField;


public class Copy2048 extends JFrame{
private JPanel scoresPane;//分數面板
private JPanel mainPane;//主面板
private JLabel labelMaxScores ;//最高分
private JLabel labelScores;//分數
private JLabel tips;        //提示操作標籤
private JTextField textMaxScores;//最高分文字框
private JLabel textScores;//分數文字框
private JLabel[][] texts;//方塊標籤二維陣列
private Icon icon2;
private int times = 16;//記錄剩餘空方塊數目
private int scores = 0;   //記錄分數
private int l1,l2,l3,l4;  //用於判斷遊戲是否失敗
Font font = new Font("", Font.BOLD,14);//設定分數面板字型型別和大小
Font font2 = new Font("", Font.BOLD,30);//設定主面板字型型別和大小
Random random = new Random();                  //獲取隨機數

public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
try{
Copy2048 frame = new Copy2048();
frame.setVisible(true);
//Thread thread = new Thread(frame);
//thread.start();
}
catch(Exception e1){
e1.printStackTrace();
}
}
});
}
/**
* 構造方法
*/
public Copy2048(){
super();
setResizable(false);               //禁止調整窗體大小
getContentPane().setLayout(null);//設定空佈局
setBounds(500, 50, 500, 615);//設定介面位置和大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定關閉
setTitle("2048PC版");                  //設定窗體標題

scoresPane = new JPanel();//建立分數顯示面板
scoresPane.setBackground(Color.green); //設定分數顯示面板的背景色
scoresPane.setBounds(20, 20, 460, 40);//設定分數面板位置和大小
scoresPane.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.YELLOW));//設定得分面板的邊框粗細和顏色
getContentPane().add(scoresPane);//將得分面板新增到窗體
scoresPane.setLayout(null);   //設定面板空佈局

labelMaxScores = new JLabel("最高分:");//最高分標籤
labelMaxScores.setFont(font);   //設定字型型別和大小
labelMaxScores.setBounds(10, 5, 50, 30);//設定最高分標籤的位置和尺寸
scoresPane.add(labelMaxScores);       //將最高分標籤新增到得分容器中

textMaxScores = new JTextField("暫不可用");//最高得分標籤
textMaxScores.setBounds(60, 5, 150, 30);//設定最高分文字框的位置和尺寸
textMaxScores.setFont(font);//設定最高分字型
textMaxScores.setEditable(false);    //設定為不可編輯
scoresPane.add(textMaxScores);//將最高分標籤新增到分數面板中

labelScores = new JLabel("得    分:");
labelScores.setFont(font);//設定分數標籤字型型別和大小
labelScores.setBounds(240, 5, 50, 30);//設定分數標籤位置和大小
scoresPane.add(labelScores);//將得分標籤新增到分數面板中

textScores = new JLabel(String.valueOf(scores));//將計算所得分數放到分數文字框
textScores.setFont(font);//設定分數字體
textScores.setBounds(290, 5, 150, 30);//設定分數位置和大小
scoresPane.add(textScores);//將得分文字框新增到分數面板中

mainPane = new JPanel();   //建立遊戲主面板
mainPane.setBounds(20, 70, 460, 500);//設定主面板位置和尺寸

this.getContentPane().add(mainPane); //新增遊戲主面板到容器中
mainPane.setLayout(null);//設定空佈局

texts = new  JLabel[4][4];//建立方塊標籤二維陣列
for(int i = 0; i < 4; i++){//遍歷陣列
for(int j = 0; j < 4; j++){
texts[i][j] = new JLabel();   //建立標籤
texts[i][j].setFont(font2);//設定方塊字型
texts[i][j].setHorizontalAlignment(SwingConstants.CENTER);//設定方塊內容居中對齊
texts[i][j].setText("");//設定方塊內容為空
texts[i][j].setBounds(120 * j, 120 * i, 100, 100);//設定方塊的大小位置
setColor(i, j, "");//設定顏色為空
texts[i][j].setOpaque(true);                                  //設定控制元件不透明
texts[i][j].setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.green));//設定方塊邊框顏色
mainPane.add(texts[i][j]);  //將建立的方塊標籤放在遊戲主面板
}
}

tips = new JLabel("Tips:使用上、下、左、右鍵或者W、S、A、D鍵控制");//建立提示標籤
tips.setFont(font);//設定提示標籤字型
tips.setBounds(60,480,400,20);//設定提示標籤位置和大小
mainPane.add(tips);//將提示標籤放到主面板

textMaxScores.addKeyListener(new KeyAdapter(){//為最高分標籤新增按鍵監聽器
public void keyPressed(  KeyEvent e){
do_label_keyPressed(e);//呼叫時間處理方法
}
});

Create2(); //最開始開啟遊戲隨機出現的兩個2
Create2(); //最開始開啟遊戲隨機出現的兩個2
}

/**
* 按鍵輸入事件的處理方法
* @param e
*/
protected  void do_label_keyPressed(final KeyEvent e){             
int code = e.getKeyCode();//獲取按鍵程式碼
int a ;        //a 的引入是為了防止連加的情況出現
String str ;
String str1;
int num;
switch(code){ //按鍵的四種情況
case KeyEvent.VK_LEFT:
case KeyEvent.VK_A:  //如果按鍵程式碼是左方向鍵或者A鍵
for(int i = 0; i < 4; i++){
a = 5;
for(int k = 0; k < 3; k++){
for(int j = 1; j < 4; j++){     //遍歷16個方塊
str = texts[i][j].getText();     //獲取當前方塊標籤文字字元
str1 = texts[i][j-1].getText();     //獲取當前方塊左邊的一個標籤文字字元

if(str1.compareTo("") == 0){//如果左邊方塊文字為空字元
texts[i][j-1].setText(str);//方塊左移
setColor(i, j-1,str);//設定顏色
texts[i][j].setText("");//當前方塊字元置空
setColor(i, j, "");//設定當前方塊顏色
}
else if((str.compareTo(str1) == 0) && (j !=a) && (j != a-1)){//避免連加
num  = Integer.parseInt(str);//獲取字串轉化為整型
scores += num;//加分
times ++; //空塊加一
str = String.valueOf(2 * num);//計算左邊方塊最終結果
texts[i][j-1].setText(str);//左邊方塊文字字元變為兩方塊之和
setColor(i, j-1, str);//設定顏色
texts[i][j].setText("");//當前方塊字元置空
setColor(i, j, "");//設定當前方塊顏色
a = j;
}
}
}
}
l1 = 1; //用於判斷遊戲是否失敗
Create2();
break;
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_D:
for(int i = 0; i < 4; i ++){
a = 5;
for(int k = 0; k < 3; k++){
for(int j = 2; j >= 0; j--){
str = texts[i][j].getText();
str1 = texts[i][j + 1].getText();

if(str1.compareTo("") == 0){
texts[i][j + 1].setText(str);
setColor(i, j+1, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && j !=a && j != a+ 1){
num  = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i][j + 1].setText(str);
setColor(i, j+1, str);
texts[i][j].setText("");
setColor(i, j, "");
a = j;
}
}
}
}
l2 = 1;
Create2();
break;
case KeyEvent.VK_UP:
case KeyEvent.VK_W:
for(int j = 0; j < 4; j++){
a = 5;
for(int k = 0; k < 3; k++){
for(int i = 1; i < 4; i++){
str = texts[i][j].getText();
str1 = texts[i - 1][j].getText();

if(str1.compareTo("") == 0){
texts[i - 1][j].setText(str);
setColor(i-1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && i != a && i != a -1){
num  = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i - 1][j].setText(str);
setColor(i-1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
a = i;
}
}
}
}
l3 =1;
Create2();
break;
case KeyEvent.VK_DOWN:
case KeyEvent.VK_S:
for(int j = 0; j < 4; j ++){
a = 5;
for(int k = 0; k < 5; k++){
for(int i = 2; i >= 0; i--){
str = texts[i][j].getText();
str1 = texts[i + 1][j].getText();

if(str1.compareTo("") == 0){
texts[i + 1][j].setText(str);
setColor(i+1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
}
else if(str.compareTo(str1) == 0 && i != a && i != a + 1){
num  = Integer.parseInt(str);
scores += num ;
times ++;
str = String.valueOf(2 * num);
texts[i + 1][j].setText(str );
setColor(i+1, j, str);
texts[i][j].setText("");
setColor(i, j, "");
a = i;
}
}
}
}
l4 = 1;
Create2();
break;
default:
break;
}
textScores.setText(String.valueOf(scores));
}

/**
* 在隨機位置產生一個2號方塊的方法
* @param i,j
*/
public void Create2(){
int i ,j;
boolean r = true;
String str;

if(times > 0){
while(r){
i = random.nextInt(4);//隨機獲取整型0-4(列數)
j = random.nextInt(4);//隨機獲取整型0-4(行數)
str = texts[i][j].getText();//獲取該隨機標籤文字
if((str.compareTo("") == 0)){//如果文字為空
texts[i][j].setIcon(icon2);
texts[i][j].setText("2");//將其文字內容設為2
setColor(i, j, "2");//設定顏色

times --; //空塊數目減少
r = false;
l1 = l2 = l3 = l4 = 0;//重置
}
}
}
//l1到l4同時被鍵盤賦值為1說明任何方向鍵都不能產生新的數字2,說明遊戲失敗
else if(l1 >0 && l2 >0 && l3 > 0 && l4 > 0){
tips.setText("                            GAME OVER !");

}
}

/**
* 設定標籤顏色
* @param i , j ,str
*/
public void setColor(int i, int j, String str){
switch(str){
case "2":
texts[i][j].setBackground(Color.yellow);
break;
case "4":
texts[i][j].setBackground(Color.red);
break;
case "8":
texts[i][j].setBackground(Color.pink);
break;
case "16":
texts[i][j].setBackground(Color.orange);
break;
case "32":
texts[i][j].setBackground(Color.magenta);
break;
case "64":
texts[i][j].setBackground(Color.LIGHT_GRAY);
break;
case "128":
texts[i][j].setBackground(Color.green);
break;
case "256":
texts[i][j].setBackground(Color.gray);
break;
case "512":
texts[i][j].setBackground(Color.DARK_GRAY);
break;
case "1024":
texts[i][j].setBackground(Color.cyan);
break;
case "2048":
texts[i][j].setBackground(Color.blue);
break;
//case "":
//case "4096":
//texts[i][j].setBackground(Color.white);
//break;
default:
texts[i][j].setBackground(Color.white);
break;
}


}


}

相關推薦

Java 2048 遊戲 原始碼

import java.awt.Color; import java.awt.EventQueue; //import java.awt.BorderLayout; //import java.awt.FlowLayout; import java.awt.Font; i

2048遊戲Java原始碼解析及原始碼打包

資料結構課程設計寫的2048小遊戲,答辯完了就開源了,因為這次的技術文件任性地寫成了傻瓜式教程了,就乾脆也放出來了,供參考,原始碼打包在最後面會附上。 一、 實現方案 本遊戲採用Java語言編寫,使用Eclipse編譯器, jdk1.7.0_51編

[原始碼和文件分享]基於組合語言的MVC思想架構2048遊戲

一 需求分析 在Win32環境下,使用MVC思想架構,同時應用多檔案多模組的軟體設計實踐,以MASM6.15為主要彙編工具,Sublime Text 3為程式碼編寫工具,綜合利用多種彙編命令語句,進行2048遊戲設計開發。 二 技術路線 2.1 系統架構 程式分為一個主模組和三個子模

[原始碼和文件分享]基於Python的PyGame庫實現的2048遊戲

一、簡介 2048的遊戲規則很簡單,每次可以選擇上下左右其中一個方向去滑動,每滑動一次,所有的數字方塊都會往滑動的方向靠攏外,系統也會在空白的地方亂數出現一個數字方塊,相同數字的方塊在靠攏、相撞時會相加。系統給予的數字方塊不是2就是4,玩家要想辦法在這小小的16格範圍中湊出“2048”這個數字方

java swing實現簡單的中國象棋遊戲原始碼

大家好,今天給大家演示一下一款由Java swing實現的小遊戲中國象棋,這款中國象棋比較簡單,實現了主要的對弈功能,適合Java學習者和學生交作業,功能不是很複雜。下面來看看執行結果。 1. 將專案匯入到eclipse; 2. 正確匯入後即可執行,由於功能相對簡單,所以所

Java貪吃蛇遊戲原始碼系列之輔助類

圖片音樂類素材 連結:https://pan.baidu.com/s/1-RMnKVGlRSq3il0-Bsd3qg 提取碼:qa3w Java貪吃蛇小遊戲之音樂類 package snakeGame; /* * 設定程式執行背景音樂,包括 點選按鈕音樂,鼓勵音,撞牆音樂,吃食物

java做一個2048遊戲

昨天,自己突發奇想,能不能在忙碌的學習裡抽一點時間來做一點事情,然後,我就有了一個要做一個2048小遊戲的想法。說真的,java我已經認真學習了一段時間了,現在也剛剛學到Swing,雖然做這個2048還有很多東西沒有學習過,但是,一邊學一邊做才是我們菜鳥的樣子吧。 做這個東

java實現2048遊戲

學習Java基礎有一段時間了,一直想做個小的桌面程式練下手,最近自己有點時間用Java寫了一個2048的桌面程式,和大家分享一下!!! 遊戲效果展示: 1、設計思想 AppFrame.java遊戲的啟動類,只調用了一個MainFrame的構造方法 MainFrame.ja

2048遊戲主要算法實現

mes 方向 時間限制 上下左右 print ron weight color ges http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4681 4681: 2

【python學習】使用python寫一個2048遊戲

ast stc 遊戲 多少 wan nbsp 小遊戲 效果 參考 個人博客:jerwang.cn 沒有參考其他代碼,效果圖: 話不多少,源代碼: https://github.com/jerustc/Python/blob/master/2048.py【python學

用原生js寫2048遊戲

gin 小遊戲 替換 上下 數位 免費學習 title index.php parseint <!DOCTYPE html> <html> <head> <title> 2048-game </title&g

2048遊戲】——CSS/原生js爬坑之純CSS模態對話框&遊戲結束

函數 一半 窗口 內容 href 標準 tex true 存儲空間 引言:2048小遊戲的結束界面,使用純CSS制作模態對話框,一般做模態對話框都會使用BootStrap自帶的模態對話框組件方便使用,但在制作要運行在移動端的小項目時,就不能使用BootStrap,因為文件太

Qt 制作2048遊戲

inf mes yellow mar point spl head switch 空格 相信大家都玩過2048把,下面是我用qt寫得2048小遊戲。 2048.pro HEADERS += Widget.h SOURCES += Widget.cpp

C語言實現簡易2048遊戲

blog 而在 而是 null 移動 是我 我們 空指針 主體 一直很喜歡玩這個小遊戲,簡單的遊戲中包含運氣與思考與策略,喜歡這種簡約又不失內涵的遊戲風格。於是萌生了用C語言實現一下的想法。 具體代碼是模仿這個:https://www.cnblogs.com/judgeyo

Java-------猜拳遊戲,四則運算等

(1)、我國最高山峰是珠穆朗瑪峰,8848米。現在我有一張足夠大的紙,它的厚度是0.001米。請問,摺疊多少次,可以折成珠穆朗瑪峰的高度。(難點:迴圈條件的改變) (2)、編寫程式計算12+22+32+....+1002的和。 (3)、編寫程式,列印1到100之內的整數,但數字中包含7的要跳

“實驗樓"中的2048遊戲復現

#-*- coding:utf-8 -*- import curses from random import randrange,choice from collections import defaultdict #所有的有效輸入轉換為“上下左右,重置,退出”這六種行為,用actions表

java數字遊戲,異常處理

Java數字小遊戲異常處理-置使用者於控制之下 前段時間發了一個猜數字的小遊戲,有很多的問題,Java是面向物件的一個程式語言,使用者可能是一個計算機的大神也有可能是一個計算機的小白,這就會造成使用者在輸入的情況下造成輸入錯誤,讓輸入數字他可能不小心輸入一個字母進去,這就會造成程式的終止

【總結篇】js編寫的2048遊戲開發(上:思路)

2048是大家都熟悉的一款魔性小遊戲,其操作簡單,卻極其有效地殺時間。本篇將詳細講解如何構建這款小遊戲的開發思路、如何根據玩法進一步分析設計程式設計結構,適合有一定html、css、js、jquery語言基礎的讀者閱讀。 一.遊戲試玩       遊戲玩法大家都很

使用C語言實現隨機遊戲原始碼

#include"stdio.h" #include"stdlib.h" #include"windows.h" int print() {     printf("\n\n+++++++++++++你會看見的數字和運算子+++++++++++++\n");   &

C語言寫的2048遊戲

基於"基於C_語言的2048演算法設計_顏冠鵬.pdf" 這一篇文獻提供的思路 在中國知網上能找到 就不貼具體內容了 [摘 要] 針對2048的遊戲規則,分析了該遊戲的演算法特點,對其相關的功能需求和演算法設計進行了簡單介紹,提出了一種 新的設計方案。解決了該設計在方陣資料結構、運動演算法和遊戲結束判斷方面的