/* 这个小游戏很简单,估计谁都能看懂,就是一个人工操作的八数码问题;
* 通过移动数字使最后八个数字安一定顺序排列;
*里边可能有问题,希望朋友没给点看意见;
*谢谢!
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class GameTest1{
public static void main (String[] args){
gameFrame game=new gameFrame();
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setVisible(true);
game.setResizable(false);
}
}
/**game frame*/
class gameFrame extends JFrame{
public gameFrame( ){
setTitle("play a game");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
gamePanel panel=new gamePanel();
add(panel);
}
public static int DEFAULT_WIDTH=300;
public static int DEFAULT_HEIGHT=300;
}
class gamePanel extends JPanel{
public gamePanel( ){
setLayout(new BorderLayout()) ;
panel=new JPanel();
panel.setLayout(new GridLayout(3,3));
add(panel);
for (int i=0;i<panel2.length;i++){
panel2[i]=new JPanel();
panel2[i].setLayout(new BorderLayout());
}
MouseMotionListener dragButton=new dragButtonListener( );
addButton("1",panel2[0],dragButton);
panel.add(panel2[1]);
panel2[1].setVisible(false);
addButton("3",panel2[2],dragButton);
addButton("8",panel2[3],dragButton);
addButton("5",panel2[4],dragButton);
addButton("6",panel2[5],dragButton);
addButton("2",panel2[6],dragButton);
addButton("4",panel2[7],dragButton);
addButton("7",panel2[8],dragButton);
}
private void addButton(String label,JPanel panel3,MouseMotionListener listener){
JButton button=new JButton(label);
button.addMouseMotionListener(listener);
panel3.setLayout(new BorderLayout());
panel3.add(button);
panel.add(panel3);
}
private class dragButtonListener implements MouseMotionListener{
public void mouseDragged(MouseEvent event){
int i=panel.getComponentCount();
for(int j=0;j<i;j++){
if(event.getComponent().getParent()==panel.getComponent(j)){
if(j==0){
if(!panel.getComponent(1).isVisible()){
panel2[j].setVisible(false);
panel2[1].add(event.getComponent());
panel2[1].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(3).isVisible()) {
panel2[j].setVisible(false);
panel2[3].add(event.getComponent());
panel2[3].setVisible(true);
event.setSource(new Object());
}
}
if(j==1){
if(!panel.getComponent(0).isVisible()){
panel2[j].setVisible(false);
panel2[0].add(event.getComponent());
panel2[0].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(2).isVisible()) {
panel2[j].setVisible(false);
panel2[2].add(event.getComponent());
panel2[2].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(4).isVisible()){
panel2[j].setVisible(false);
panel2[4].add(event.getComponent());
panel2[4].setVisible(true);
event.setSource(new Object());
}
}
if(j==2){
if(!panel.getComponent(1).isVisible()){
panel2[j].setVisible(false);
panel2[1].add(event.getComponent());
panel2[1].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(5).isVisible()) {
panel2[j].setVisible(false);
panel2[5].add(event.getComponent());
panel2[5].setVisible(true);
event.setSource(new Object());
}
}
if(j==3){
if(!panel.getComponent(0).isVisible()){
panel2[j].setVisible(false);
panel2[0].add(event.getComponent());
panel2[0].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(4).isVisible()) {
panel2[j].setVisible(false);
panel2[4].add(event.getComponent());
panel2[4].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(6).isVisible()){
panel2[j].setVisible(false);
panel2[6].add(event.getComponent());
panel2[6].setVisible(true);
event.setSource(new Object());
}
}
if(j==4){
if(!panel.getComponent(1).isVisible()){
panel2[j].setVisible(false);
panel2[1].add(event.getComponent());
panel2[1].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(3).isVisible()) {
panel2[j].setVisible(false);
panel2[3].add(event.getComponent());
panel2[3].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(5).isVisible()){
panel2[j].setVisible(false);
panel2[5].add(event.getComponent());
panel2[5].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(7).isVisible()){
panel2[j].setVisible(false);
panel2[7].add(event.getComponent());
panel2[7].setVisible(true);
event.setSource(new Object());
}
}
if(j==5){
if(!panel.getComponent(2).isVisible()){
panel2[j].setVisible(false);
panel2[2].add(event.getComponent());
panel2[2].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(4).isVisible()) {
panel2[j].setVisible(false);
panel2[4].add(event.getComponent());
panel2[4].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(8).isVisible()){
panel2[j].setVisible(false);
panel2[8].add(event.getComponent());
panel2[8].setVisible(true);
event.setSource(new Object());
}
}
if(j==6){
if(!panel.getComponent(3).isVisible()){
panel2[j].setVisible(false);
panel2[3].add(event.getComponent());
panel2[3].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(7).isVisible()) {
panel2[j].setVisible(false);
panel2[7].add(event.getComponent());
panel2[7].setVisible(true);
event.setSource(new Object());
}
}
if(j==7){
if(!panel.getComponent(4).isVisible()){
panel2[j].setVisible(false);
panel2[4].add(event.getComponent());
panel2[4].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(6).isVisible()) {
panel2[j].setVisible(false);
panel2[6].add(event.getComponent());
panel2[6].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(8).isVisible()){
panel2[j].setVisible(false);
panel2[8].add(event.getComponent());
panel2[8].setVisible(true);
event.setSource(new Object());
}
}
if(j==8){
if(!panel.getComponent(5).isVisible()){
panel2[j].setVisible(false);
panel2[5].add(event.getComponent());
panel2[5].setVisible(true);
event.setSource(new Object());
}
else if(!panel.getComponent(7).isVisible()) {
panel2[j].setVisible(false);
panel2[7].add(event.getComponent());
panel2[7].setVisible(true);
event.setSource(new Object());
}
}
}
}
}
public void mouseMoved(MouseEvent event){
}
}
private JPanel panel;
private JPanel[] panel2=new JPanel[9];
}