欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

推箱子代碼java 推箱子代碼java數(shù)據(jù)結(jié)構(gòu)

我想要用java編寫一個簡單的推箱子游戲,里面的移動事件要怎樣控制啊?

監(jiān)控鍵盤事件,監(jiān)控方向鍵,然后根據(jù)方向鍵判斷角色的對應(yīng)方向是否有箱子,有箱子,在判斷箱子的前方是否有路;沒有箱子就角色移動到那個位置。

站在用戶的角度思考問題,與客戶深入溝通,找到江源網(wǎng)站設(shè)計與江源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋江源地區(qū)。

假設(shè)有個方法判斷坐標是箱子還是空地或者越界check(int x,int y)通過返回類型判斷,返回類型可以自己定義,這里定義成int類型,0代表箱子,1代表空地,2代表越界

if(check(X+1,y)==0){

if(check(x+2,y)==1){

//箱子往右移動一格,同時角色也往右移動一個

}else if(check(x+2,y)==2){

//箱子推不動,角色也不動,箱子到了墻角,給出提示或者保持角色和箱子原地不動、

}

}

if(check(x+1,y)==1){

//角色往右移動,箱子不動

}

同理等于2的時候,角色原地不動。。。

這只是簡單的做了判斷,具體的實現(xiàn)看你自己了,可以把人和箱子分開判斷。。總之把思路分析清楚就OK

求各種各樣的小游戲的源代碼,比如:貪吃蛇、推箱子、俄羅斯方塊、五子棋等,最好是.NET的,JAVA也行。

我有java的,你可以看看:一個拼圖

import java.lang.Math.*;

import java.awt.event.*;

import java.awt.*;

import javax.swing.*;

class MainFrame extends JFrame implements ActionListener{ //定義整個框架

private JButton[] jb = new JButton[8];

private JButton jbs = new JButton("開 局");

private JButton jbres = new JButton("重新開始");

private JPanel jp1 = new JPanel();

private JPanel jp2 = new JPanel();

private int[] n = new int[9];

private int[] n1 = new int[9];

private int position = 8,p,q;

private boolean bl,startbl=false;

private JLabel jl = new JLabel();

private int count = 0;

private JLabel jl1 = new JLabel(" "+Integer.toString(0));

public MainFrame(){ //框架的構(gòu)造方法

int i;

for(int j = 0; j n.length; j++){

n[j] = j;

n1[j] = n[j];

}

for(i = 0; i jb.length; i++){ //給每個按鈕賦相應(yīng)的值,并注監(jiān)聽器

jb[i] = new JButton(Integer.toString(i+1));

jb[i].setFont(new Font("宋體",Font.BOLD,48));

jp2.add(jb[i]);

jb[i].addActionListener(this);

}

for(i = 0; i n.length; i++){

if(n[i] == position)

jp2.add(jl);

else

jp2.add(jb[n[i]]);

}

jp2.setLayout(new GridLayout(3,3));//注冊監(jiān)聽器

jbs.addActionListener(this);

jbres.addActionListener(this);

jp1.add(jbs);

jp1.add(jbres);

jp1.add(jl1);

jp1.setLayout(new FlowLayout()); //將jp1設(shè)置為流布局

setLayout(new BorderLayout()); //整體布局為邊界布局

this.add("North",jp1);

this.add("Center",jp2);

this.setTitle("拼圖游戲");

this.setBounds(100,100,300,350);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //實現(xiàn)關(guān)閉按鈕

this.setResizable(false);

this.setVisible(true);

}

public void actionPerformed(ActionEvent e){ //實現(xiàn)按鈕的事件

if(e.getSource()==jbres){ // 重新開始按鈕事件

for(int j = 0; jn.length;j++)

n[j] = n1[j];

reShow();

startbl=true;

count = 0;

jl1.setText(" "+Integer.toString(0));

}

else if(e.getSource()==jbs) //開局按鈕事件

this.Init();

else if(startbl){ //按鈕1-8移動事件

for(int i = 0; i jb.length; i++)

if(e.getSource() == jb[i]){

//System.out.println(i+1);

for(int a=0;an.length;a++){

if(n[a]==i)

p=a;

if(n[a]==position)

q=a;

}

}

if(p != 0 p != 1 p != 2)

if((p-3) == q)

swap(p,q);

if(p != 0 p != 3 p != 6)

if((p-1) == q)

swap(p,q);

if(p != 2 p != 5 p != 8)

if((p+1) == q)

swap(p,q);

if(p != 6 p != 7 p != 8)

if((p+3) == q)

swap(p,q);

}

}

public void swap(int x,int y){ //按鈕1-8與空白圖片交換

int z;

z = n[x];

n[x] = n[y];

n[y]=z;

jl1.setText(" "+Integer.toString(++count));

reShow();

win();

}

public void Init(){ //隨機產(chǎn)生游戲界面

int i=0,j,x;

boolean bl ;

while(i9){

bl = true;

x=(int)(Math.random()*9);

for(j=0;ji;j++)

if(n[j] == x)

bl=false;

if(bl){

n [i++] = x;

n1[i-1] = x;

}

}

reShow();

startbl=true;

count = 0;

jl1.setText(" "+Integer.toString(0));

}

public void reShow(){ //對游戲界面的重寫

for(int i = 0; i n.length; i++){

if(n[i] == position)

jp2.add(jl);

else

jp2.add(jb[n[i]]);

}

jp2.revalidate();

}

public void win(){ //判斷是否成功

boolean winbl=true;

for(int i=0;in.length;i++)

if(n[i]!=i)

winbl=false;

if(winbl){

JOptionPane.showMessageDialog(this,"祝賀你,你成功了! "+"你用了"+Integer.toString(count)+"步","",JOptionPane.INFORMATION_MESSAGE);

startbl=false;

}

}

}

public class Collage { // 主函數(shù)類

public static void main(String[] args){

new MainFrame();

}

}

自已以前編的,不是很好,你就參考參考吧

java 推箱子代碼的中文 解釋

這個十分容易,我說下基本的就是了,你是一個5*5的黑點,箱子是5*5的白點,所有的箱子的坐標在一個arraylist里,每次你按方向是,判斷你的位置先,如果是邊就不動,如果不是邊,就判斷有沒有箱子,如果有箱子再判斷后面,用while就行了,記得你把可能會移動的東西記下到另外的arraylist,如果可以動,就把另外的arraylist的元素的坐標適應(yīng)加5,然后重畫下

我變了一個推箱子的代碼,可不知道如何加入圖片和音樂,請求高人指點

推箱子小游戲代碼,包含音樂,換圖功能,同時可以進行鼠標或鍵盤操作-Sokoban game code, including music, for map features, at the same time can be a mouse or keyboard operation

[MoveNut.rar] - 推箱子游戲,無密碼可解壓。 經(jīng)典游戲一個,歡迎大家下載。

[tftp_server_linux.rar] - linux下的tftp源代碼,比較經(jīng)典的一個,好東西大家分享

[ProxyService.rar] - 用socket做的代理程序,對于外網(wǎng)連內(nèi)網(wǎng)很有用

[tuixz.rar] - 這個程序基本實現(xiàn)了推箱子的所有功能,加入了背景音樂,有5首背景音樂可供 選擇,并可以跳關(guān)、選關(guān)等,并且可以無限悔步,一直悔到當前關(guān)卡的開始狀態(tài)。

[mine60.rar] - Java推箱子游戲(一共有50關(guān)卡,帶好聽的音效),完整版源碼,圖形界面,看上去夠?qū)I(yè)。界面和泡泡堂游戲有點相似,學(xué)習(xí)游戲編程的JAVA朋友值得一看。

推箱子游戲java代碼如何判斷下一步是墻還是空地

1. 確定的功能:讓玩家通過按上下左右鍵推箱子,當箱子們都推到了目的地后出現(xiàn)過關(guān)信息,并顯示下一關(guān)。推錯了玩家還按空格鍵從新玩過這關(guān)。直到過完全部關(guān)卡。

2. 定義的核心數(shù)據(jù)結(jié)構(gòu):我們定義一個二維數(shù)組ghouse來記錄屏幕上各點的狀態(tài)。char ghouse[20][20]; 其中:0表示什么都沒有,'b'表示箱子,'w'表示墻壁,'m'表示目的地,'i'表示箱子在目的地。

3. 對整個進行功能模塊劃分。

(1)。初始化:在屏幕上輸出歡迎信息,把ghouse數(shù)組的元素初始化為0。并根據(jù)各關(guān)的要求在屏幕上輸出墻、箱子、目的地和人。并用ghouse 數(shù)組記錄各點的狀態(tài)。

(2)。進入游戲循環(huán):這個游戲主循環(huán)是等待按鍵。當接受到上下左右鍵時執(zhí)行相關(guān)操作:接受ESC鍵時退出游戲;接受空格鍵時返回本關(guān)開頭;接受無效按鍵時做忽略處理。重點介紹按上下左右鍵時如何執(zhí)行相關(guān)操作。

(3)。判斷是否過關(guān):用一個鏈表win由每關(guān)的初始化函數(shù)傳給main函數(shù)。Win鏈表主要記錄屏幕上的哪些點是目的地,并記錄目的地的位置。Main函數(shù)每執(zhí)行一次操作后就判斷屏幕上的目的地是不是都有箱子了。

本文名稱:推箱子代碼java 推箱子代碼java數(shù)據(jù)結(jié)構(gòu)
標題網(wǎng)址:http://chinadenli.net/article36/hppspg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航網(wǎng)站制作外貿(mào)網(wǎng)站建設(shè)小程序開發(fā)網(wǎng)站設(shè)計搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)