推箱子小游戏代码,包含音乐,换图功能,同时可以进行鼠标或键盘操作-Sokoban game code, including music, for map features, at the same time can be a mouse or keyboard operation
创新互联建站于2013年创立,是专业互联网技术服务公司,拥有项目成都做网站、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元台前做网站,已为上家服务,为台前各地企业和个人服务,联系电话:13518219792
[MoveNut.rar] - 推箱子游戏,无密码可解压。 经典游戏一个,欢迎大家下载。
[tftp_server_linux.rar] - linux下的tftp源代码,比较经典的一个,好东西大家分享
[ProxyService.rar] - 用socket做的代理程序,对于外网连内网很有用
[tuixz.rar] - 这个程序基本实现了推箱子的所有功能,加入了背景音乐,有5首背景音乐可供 选择,并可以跳关、选关等,并且可以无限悔步,一直悔到当前关卡的开始状态。
[mine60.rar] - Java推箱子游戏(一共有50关卡,带好听的音效),完整版源码,图形界面,看上去够专业。界面和泡泡堂游戏有点相似,学习游戏编程的JAVA朋友值得一看。
网上搜一下,网上有这种推箱子箱子的源码下码的。
下载的看一眼就知道。
如果我的回答没能帮助您,请继续追问。
你的采纳是我前进的动力。记得好评和采纳。
首先你别想图了,想想玩法吧。我估计你玩法都已经会了 就先不说了。
那么地图来实现地图部分的构思
地图无非就是你用坐标构成的 咋实现自己想吧 是二维数组还是啥自己选吧。
地图有些地方不可以移动的,设置一个状态标志吧。让箱子和人都过不去,并且不能移动
地图上有箱子 可以移动,但是人不能过 也设置一个标志吧
地图上有人 不能过地图 不能过箱子,自己设置标志吧
其实很简单 给你个简单的例子
000000
012000
000333
000000
033300
000009
1 是人 2是箱子 3是墙 9 是终点
至于图象么
你都有坐标了 规定一下图象的坐标 这个可以用网格布局来做
响应用户输入的命令 比如方向
改变图片的位置 你比如说 人向下走了 那么人的图片向下移动 同时原来位置的图片改成默认图片
累死了啊 汉
用迭代把 要写两个方法 一个计算人是否能到达某一个格子 一个是计算箱子是否能到达相邻的某一个格子
我有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(){ //框架的构造方法
int i;
for(int j = 0; j n.length; j++){
n[j] = j;
n1[j] = n[j];
}
for(i = 0; i jb.length; i++){ //给每个按钮赋相应的值,并注监听器
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));//注册监听器
jbs.addActionListener(this);
jbres.addActionListener(this);
jp1.add(jbs);
jp1.add(jbres);
jp1.add(jl1);
jp1.setLayout(new FlowLayout()); //将jp1设置为流布局
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); //实现关闭按钮
this.setResizable(false);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){ //实现按钮的事件
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(){ //随机产生游戏界面
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 { // 主函数类
public static void main(String[] args){
new MainFrame();
}
}
自已以前编的,不是很好,你就参考参考吧