用java开发小游戏

我给你一个华容道的游戏,供参考。你可以自己做。多看看例子,想一想就好。

找个不好看的游戏,别开玩笑。

导入Java . awt . *;

导入javax . swing . jap plet . *;

导入Java . awt . event . *;

导入javax . swing . *;

类People扩展JButton实现FocusListener

{

Rectangle rect = null

int left_x,left _ y;//按钮左上角坐标。

int宽度,高度;//按钮的宽度和高度。

字符串名称;

int数;

公众人物(int number,String s,int x,int y,int w,int h,华容道路)

{

超级用户;

name = s;

this.number =数字;

left _ x = x

left _ y = y

宽度= w;

高度= h;

setBackground(颜色。绿色);

road.add(这个);

addKeyListener(道路);

setBounds(x,y,w,h);

addFocusListener(this);

rect =新矩形(x,y,w,h);

}

公共void焦点增益(焦点事件e)

{

set background(color . red);

}

公共void focusLost(FocusEvent e)

{

setBackground(颜色。绿色);

}

}

公共类HuaRongRoad扩展JApplet实现KeyListener、ActionListener

{

People People[]=新人[10];

矩形左、右、上、下;//华容道的边界

JButton restart = new JButton(" restart ");

公共void init()

{

getContentPane()。set layout(null);

getContentPane()。添加(重启);

restart.setBounds(5,5,80,25);

restart . addactionlistener(this);

getContentPane()。set background(color . white);

人[0]=新人(0,“曹操”,154,54,200,200,这个);

人[1] =新人(1,《关羽》,154,254,200,100,这个);

人[2]=新人(2,“张飞”,54254100200,这个);

人[3]=新人(3,《刘备》,354254100200,这个);

人[4]=新人(4,《张辽》,54,54,100,200,此);

人[5]=新人(5,“曹仁”,354,54,100,200,此);

人[6]=新人(6,“兵”,54,454,100,100,这个);

人[7]=新人(7,“兵”,354,454,100,100,这个);

人[8]=新人(8,“兵”,154,354,100,100,这个);

人[9]=新人(9,“兵”,254,354,100,100,这个);

人[9]。request focus();

人[0]。set foreground(color . white);

left =新矩形(49,49,5,510);

right =新矩形(454,49,5,510);

above =新矩形(49,49,410,5);

below =新矩形(49,554,410,5);

}

公共空白油漆(图形g)

{//华容道的边界

super.paint(克);

g . set color(color . cyan);

g.fillRect(49,49,5,510);

g.fillRect(454,49,5,510);

g.fillRect(49,49,410,5);

g . fill rect(49554410,5);

//

G.drawString("点击并按方向箭头移动",100,20);

g . set color(color . red);

G.drawString("曹操到此一步",110,300);

}

公共void按键(按键事件e)

{

People man =(People)e . getsource();

man . rect . set location(man . get bounds()。x,man.getBounds()。y);

if(e.getKeyCode()==KeyEvent。VK_DOWN)

{

man . left _ y = man . left _ y+100;//转发50个单位。

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

//判断是否与其他人重叠或者有边界,如果出现则返回50个单位。

for(int I = 0;我& lt10;i++)

{

如果((man.rect .与(people[i])相交。rect))& amp;& amp(man.number!=我))

{

man . left _ y = man . left _ y-100;

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

}

}

if(man.rect.intersects(below))

{

man . left _ y = man . left _ y-100;

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

}

}

if(e.getKeyCode()==KeyEvent。VK_UP)

{

man . left _ y = man . left _ y-100;//转发50个单位。

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

//判断是否与其他人重叠或者有边界,如果出现则返回50个单位。

for(int I = 0;我& lt10;i++)

{

如果((man.rect .与(people[i])相交。rect))& amp;& amp(man.number!=我))

{

man . left _ y = man . left _ y+100;

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

}

}

if(man.rect.intersects(above))

{

man . left _ y = man . left _ y+100;

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

}

}

if(e.getKeyCode()==KeyEvent。VK _左)

{

man . left _ x = man . left _ x-100;//向左前进50个单位

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

//判断是否与其他人重叠或者有边界,如果出现则返回50个单位。

for(int I = 0;我& lt10;i++)

{

如果((man.rect .与(people[i])相交。rect))& amp;& amp(man.number!=我))

{

man . left _ x = man . left _ x+100;

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

}

}

if(man . rect . intersect(left))

{

man . left _ x = man . left _ x+100;

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

}

}

if(e.getKeyCode()==KeyEvent。VK _右)

{

man . left _ x = man . left _ x+100;//向右50个单位。

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

//判断是否与其他人重叠或者有边界,如果出现则返回50个单位。

for(int I = 0;我& lt10;i++)

{

如果((man.rect .与(people[i])相交。rect))& amp;& amp(man.number!=我))

{

man . left _ x = man . left _ x-100;

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

}

}

if(man.rect.intersects(right))

{

man . left _ x = man . left _ x-100;

man.setLocation(man.left_x,man . left _ y);

man . rect . set location(man . left _ x,man . left _ y);

}

}

}

public void key typed(key event e){ }

public void key released(key event e){ }

公共无效操作已执行(操作事件e)

{

getContentPane()。remove all();

this . init();

}

}