用迭代把 要寫兩個(gè)方法 一個(gè)計(jì)算人是否能到達(dá)某一個(gè)格子 一個(gè)是計(jì)算箱子是否能到達(dá)相鄰的某一個(gè)格子

創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)左權(quán),10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
網(wǎng)上搜一下,網(wǎng)上有這種推箱子箱子的源碼下碼的。
下載的看一眼就知道。
如果我的回答沒能幫助您,請繼續(xù)追問。
你的采納是我前進(jìn)的動(dòng)力。記得好評和采納。
我寫的一個(gè)猜數(shù)字游戲,希望對你有用,代碼如下:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class GuessNumber {
static int trys, A, B;
static String r, t;
public static int[] MakeGuessNumber(){//隨機(jī)生成一個(gè)無重復(fù)數(shù)字的四位數(shù)
Random r = new Random();
int guess[] = new int[4];
for(int i=0; i4; i++){
guess[i] = r.nextInt(10);
for(int j=i-1; j=0; j--){
if(guess[i]==guess[j]){
i--;
break;}
}
}
return guess;
}
public static String getRundom(){//將此四位數(shù)轉(zhuǎn)化為字符串
int guess[]=MakeGuessNumber();
return ""+guess[0]+guess[1]+guess[2]+guess[3];
}
public static void messageDialog(Object o){
JOptionPane.showMessageDialog(null, o);
}
public static void guessNumber(){//主要算法實(shí)現(xiàn)部分
r=getRundom();
//System.out.println(r);
JFrame jf=new JFrame();
JButton b1=new JButton("新游戲");
JLabel l1=new JLabel("輸入:");
final JTextField jtf=new JTextField(10);
JButton b2=new JButton("提交");
final JTextArea jta=new JTextArea(10,10);
jta.append(" "+"Guess"+" "+"Result"+"\n");
JScrollPane scrollPane=new JScrollPane(jta);
JPanel jp1=new JPanel();
jp1.add(l1);
jp1.add(jtf);
jp1.add(b2);
jf.add(b1,BorderLayout.NORTH);
jf.add(jp1,BorderLayout.CENTER);
jf.add(scrollPane,BorderLayout.SOUTH);
b1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
trys=0;
A=0;
B=0;
jta.setText(" "+"Guess"+" "+"Result"+"\n");
jtf.setText("");
r=getRundom();
//System.out.println(r);
}
});
b2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
t=jtf.getText();
A=0;
B=0;
if(t.length()!=4||t.substring(0, 1).equals(t.substring(1, 2))
||t.substring(0, 1).equals(t.substring(2, 3))
||t.substring(0, 1).equals(t.substring(3, 4))
||t.substring(1, 2).equals(t.substring(2, 3))
||t.substring(1, 2).equals(t.substring(3, 4))
||t.substring(2, 3).equals(t.substring(3, 4))
||!t.matches("[0-9]*"))
messageDialog("Wrong Input!");
else{
jtf.setText("");
trys++;
if(t.substring(0, 1).equals(r.substring(0, 1)))
A++;
if(t.substring(0, 1).equals(r.substring(1, 2)))
B++;
if(t.substring(0, 1).equals(r.substring(2, 3)))
B++;
if(t.substring(0, 1).equals(r.substring(3, 4)))
B++;
if(t.substring(1, 2).equals(r.substring(1, 2)))
A++;
if(t.substring(1, 2).equals(r.substring(0, 1)))
B++;
if(t.substring(1, 2).equals(r.substring(2, 3)))
B++;
if(t.substring(1, 2).equals(r.substring(3, 4)))
B++;
if(t.substring(2, 3).equals(r.substring(2, 3)))
A++;
if(t.substring(2, 3).equals(r.substring(0, 1)))
B++;
if(t.substring(2, 3).equals(r.substring(1, 2)))
B++;
if(t.substring(2, 3).equals(r.substring(3, 4)))
B++;
if(t.substring(3, 4).equals(r.substring(3, 4)))
A++;
if(t.substring(3, 4).equals(r.substring(0, 1)))
B++;
if(t.substring(3, 4).equals(r.substring(1, 2)))
B++;
if(t.substring(3, 4).equals(r.substring(2, 3)))
B++;
jta.append(trys+" "+t+" "+A+"A"+B+"B"+"\n");
if(A==4){
if(trys=4)
messageDialog("You win after "+trys+" trys!");
else if(trys=3)
messageDialog("You win after only "+trys+" trys!");
}
}
}
});
jf.setSize(300, 300);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]){
guessNumber();
}
}
我沒有進(jìn)行詳細(xì)注釋,這個(gè)程序挺好理解的,你可以自己再看一下
監(jiān)控鍵盤事件,監(jiān)控方向鍵,然后根據(jù)方向鍵判斷角色的對應(yīng)方向是否有箱子,有箱子,在判斷箱子的前方是否有路;沒有箱子就角色移動(dòng)到那個(gè)位置。
假設(shè)有個(gè)方法判斷坐標(biāo)是箱子還是空地或者越界check(int x,int y)通過返回類型判斷,返回類型可以自己定義,這里定義成int類型,0代表箱子,1代表空地,2代表越界
if(check(X+1,y)==0){
if(check(x+2,y)==1){
//箱子往右移動(dòng)一格,同時(shí)角色也往右移動(dòng)一個(gè)
}else if(check(x+2,y)==2){
//箱子推不動(dòng),角色也不動(dòng),箱子到了墻角,給出提示或者保持角色和箱子原地不動(dòng)、
}
}
if(check(x+1,y)==1){
//角色往右移動(dòng),箱子不動(dòng)
}
同理等于2的時(shí)候,角色原地不動(dòng)。。。
這只是簡單的做了判斷,具體的實(shí)現(xiàn)看你自己了,可以把人和箱子分開判斷。。總之把思路分析清楚就OK
1. 確定的功能:讓玩家通過按上下左右鍵推箱子,當(dāng)箱子們都推到了目的地后出現(xiàn)過關(guān)信息,并顯示下一關(guān)。推錯(cuò)了玩家還按空格鍵從新玩過這關(guān)。直到過完全部關(guān)卡。
2. 定義的核心數(shù)據(jù)結(jié)構(gòu):我們定義一個(gè)二維數(shù)組ghouse來記錄屏幕上各點(diǎn)的狀態(tài)。char ghouse[20][20]; 其中:0表示什么都沒有,'b'表示箱子,'w'表示墻壁,'m'表示目的地,'i'表示箱子在目的地。
3. 對整個(gè)進(jìn)行功能模塊劃分。
(1)。初始化:在屏幕上輸出歡迎信息,把ghouse數(shù)組的元素初始化為0。并根據(jù)各關(guān)的要求在屏幕上輸出墻、箱子、目的地和人。并用ghouse 數(shù)組記錄各點(diǎn)的狀態(tài)。
(2)。進(jìn)入游戲循環(huán):這個(gè)游戲主循環(huán)是等待按鍵。當(dāng)接受到上下左右鍵時(shí)執(zhí)行相關(guān)操作:接受ESC鍵時(shí)退出游戲;接受空格鍵時(shí)返回本關(guān)開頭;接受無效按鍵時(shí)做忽略處理。重點(diǎn)介紹按上下左右鍵時(shí)如何執(zhí)行相關(guān)操作。
(3)。判斷是否過關(guān):用一個(gè)鏈表win由每關(guān)的初始化函數(shù)傳給main函數(shù)。Win鏈表主要記錄屏幕上的哪些點(diǎn)是目的地,并記錄目的地的位置。Main函數(shù)每執(zhí)行一次操作后就判斷屏幕上的目的地是不是都有箱子了。
以前看過如鵬網(wǎng)的《這樣學(xué)Java不枯燥》視頻教程,通過開發(fā)飛機(jī)大戰(zhàn)等經(jīng)典小游戲來講解Java的知識點(diǎn),挺有意思的
網(wǎng)頁標(biāo)題:用java寫推箱子代碼 編程推箱子
路徑分享:http://chinadenli.net/article22/hijdcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、虛擬主機(jī)、標(biāo)簽優(yōu)化、用戶體驗(yàn)、網(wǎng)站改版、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)