private final static int canvaswidth=400; private final static int canvasheight=300; private final static int nodewidth=10; private final static int nodeheight=10; //construction GreedSnake(){
jframe=new JFrame("The Greed Sanke!"); jframe.setLayout(new BorderLayout()); Container cp=jframe.getContentPane(); //在jframe面板中添加各种组件 jlabel=new JLabel("welcome"); jlabel.setText("Welcome my friend! Enjoy your self!");
jpanel=new JPanel(); jpanel.setLayout(new BorderLayout()); JLabel label=new JLabel("Pass enter or 'r' or 's' to start",JLabel.CENTER); jpanel.add(label,BorderLayout.NORTH); JLabel label2=new JLabel("Pass space to pause this game!",JLabel.CENTER); jpanel.add(label2,BorderLayout.CENTER); JLabel label3=new JLabel("Pass pageUp or pageDown to up or down the speed of the snake!",JLabel.CENTER); jpanel.add(label3,BorderLayout.SOUTH); cp.add(jpanel,BorderLayout.SOUTH);
}//end construction public void begin(){ //开启一个SnakeModel的进程,并且开始改进程 snakemodel=new SnakeModel(this,canvaswidth/nodewidth,canvasheight/nodeheight); (new Thread(snakemodel)).start(); }
public void paintingNode(Graphics gg,Node n){ /* * 使用Graphics 的fillRect方法,填充一个矩形, * 矩形的起点需要乘以一个NODE的长宽,以避免重叠 * */ gg.fillRect(n.x*nodewidth, n.y*nodeheight,nodewidth-1,nodeheight-1); } public void keyPressed(KeyEvent e) {//按下某一个键时,调用此方法 int keycode=e.getKeyCode(); /* if(keycode==KeyEvent.VK_ENTER||keycode==KeyEvent.VK_R){ begin(); }*/
switch(keycode){ case KeyEvent.VK_LEFT: snakemodel.chageDirection(SnakeModel.LEFT); break; case KeyEvent.VK_UP: snakemodel.chageDirection(SnakeModel.UP); break; case KeyEvent.VK_RIGHT: snakemodel.chageDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_DOWN: snakemodel.chageDirection(SnakeModel.DOWN); break; case KeyEvent.VK_PAGE_DOWN: snakemodel.speedDown(); break; case KeyEvent.VK_PAGE_UP: snakemodel.speedUp(); break; case KeyEvent.VK_ENTER: case KeyEvent.VK_R: begin(); break; case KeyEvent.VK_SPACE: case KeyEvent.VK_P: snakemodel.chagePause(); default: }//end switch }//end keyPressed
public void keyReleased(KeyEvent e) {//释放某一个键时,调用此方法 }
public void keyTyped(KeyEvent e) {//键入某一个键时,调用此方法! } //main public static void main(String[] args){ GreedSnake gs=new GreedSnake(); } }