用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();
}
}