文档详情

练习华容道.doc

发布:2017-04-04约6.6千字共8页下载文档
文本预览下载声明
练习96 华容道(二) 本例知识点 一句话讲解 新学知识 Graphics类 通过该类画出华容道的界面信息 函数keyPressed的应用 通过该类响应用户操作 已学知识 People 实例化游戏中的各个人物 使用颜色类Color 设置背景颜色 一、练习具体要求 本练习实现华容道游戏的整体功能。如图96-1所示,程序执行后,点击相应的人物,然后按上下左右键可以移动。点击重新开始按钮,可以将各个人物的位置重置。如果目的地的面积能够容得下当前要移动的人物,则认为可以移动。当曹操移动到“曹操到达该位置”的位置的时候,认为程序结束。 二、程序及注释 (1)编程思路:本练习因为首先要实现华容道游戏的整体功能,所以首先生成游戏中的主人公:要生成游戏中的十个人物,就要用到练习25中制作的人物类People,首先通过语句People people[]=new People[10]定义一个可以存放十个变量的数组,再通过people[0]=new People(0,曹操,104,54,100,100,this)等九话生成十个人物,最后通过people[9].requestFocus() 设置焦点。然后,因为要设置华容道的界面信息,所以用到了Graphics类,首先通过语句g.setColor(Color.cyan)来设置要使用的颜色,然后通过g.fillRect()分别设置了左右上下四部分边界的填充颜色,最后通过g.drawString()函数写出提示曹操逃出位置和按键规则给用户参考。最后,因为要实现人机交互的效果,所以要响应键盘事件,这一操作是在函数public void keyPressed(KeyEvent e)中完成的:首先通过语句People man=(People)e.getSource()获取事件源,然后通过语句if(e.getKeyCode()==KeyEvent.VK_DOWN)响应用户按向下光标的操作,通过语句if(e.getKeyCode()==KeyEvent.VK_LEFT)响应用户按向左光标的操作,通过语句if(e.getKeyCode()==KeyEvent. VK_RIGHT)响应用户按向右光标的操作,通过语句if(e.getKeyCode()==KeyEvent. VK_UP)响应用户按向上光标的操作,最后通过函数public void actionPerformed(ActionEvent e)将界面所有控件复位,实现重新开始的功能。 (2)程序实现及注释:(内含练习25中的People类的定义) //HuaRongRoad.java import java.awt.*; import java.applet.*; import java.awt.event.*; class People extends Button implements FocusListener //代表华容道人物的类 { Rectangle rect=null; int left_x,left_y;//按扭的左上角坐标 int width,height; //按扭的宽和高 String name; int number; People(int number,String s,int x,int y,int w,int h,HuaRongRoad road) { super(s); name=s; this.number=number; left_x=x;left_y=y; width=w;height=h; setBackground(Color.orange); road.add(this); addKeyListener(road); setBounds(x,y,w,h); addFocusListener(this); rect=new Rectangle(x,y,w,h); } public void focusGained(FocusEvent e) { setBackground(Color.red); } public void focusLost(FocusEvent e) { setBackground(Color.orange); } } public class HuaRongRoad extends Applet implements KeyListener,ActionListener { People people[]=new People[10]; Rectangle left,right,above ,below;//华容道的边界 Butt
显示全部
相似文档