core java 中的sketch小游戏

来源:互联网 发布:淘宝怎么没有索尼zx2了 编辑:程序博客网 时间:2024/04/29 00:14
  1. import javax.swing.*;
  2. import java.awt.geom.*;
  3. import java.util.*;
  4. import java.awt.event.*;
  5. import java.awt.*;
  6. public class Sketch {
  7.     public static void main(String []args){
  8.         SketchFrame  sf=new SketchFrame();
  9.         sf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  10.         sf.show();
  11.     }
  12. }
  13. class SketchFrame  extends JFrame{
  14.     public SketchFrame(){
  15.         setTitle("phenix");
  16.         setSize(this.DEFAULT_WIDTH,this.DEFAULT_HEIGHT);
  17.         SketchPanel panel=new SketchPanel();
  18.         Container  contentPane=getContentPane();
  19.         contentPane.add(panel);
  20.     }
  21.     public static final int DEFAULT_WIDTH=300;
  22.     public static final int DEFAULT_HEIGHT=400;
  23. }
  24. class SketchPanel  extends JPanel{
  25.     private Point2D last;
  26.     private ArrayList lines;
  27.     private static final int SMALL_INCREMENT=1;
  28.     private static final int LARGE_INCREMENT=5;
  29.     public  SketchPanel(){
  30.         last=new Point2D.Double(100,100);
  31.         lines=new ArrayList();
  32.         KeyHandler listener=new KeyHandler();
  33.         addKeyListener(listener);
  34.         setFocusable(true);
  35.     }
  36.     public void add(int dx,int dy){
  37.         Point2D  end=new Point2D.Double(last.getX()+dx,last.getY()+dy);
  38.         Line2D  line=new Line2D.Double(last,end);
  39.         lines.add(line);
  40.         repaint();
  41.         last=end;
  42.         System.out.println("哈哈");
  43.     }
  44.     public void paintComponent(Graphics g){
  45.         super.paintComponent(g);
  46.         Graphics2D g2=(Graphics2D)g;
  47.         for(int i=0;i<lines.size();i++){
  48.             g2.draw((Line2D)lines.get(i));
  49.         }
  50.     }
  51.     private class KeyHandler implements KeyListener
  52.     {
  53.         
  54.         public void keyPressed(KeyEvent event){
  55.               int keyCode=event.getKeyCode();
  56.               //set distance
  57.               int d;
  58.               if(event.isShiftDown()){
  59.                   d=LARGE_INCREMENT;
  60.                   System.out.println("shift key is down");
  61.               }
  62.               else
  63.               {
  64.                   d=SMALL_INCREMENT;
  65.               }
  66.               if(keyCode==KeyEvent.VK_LEFT){
  67.                   add(-d,0);                  
  68.               }
  69.               else
  70.                   if(keyCode==KeyEvent.VK_RIGHT){
  71.                       add(d,0);
  72.                   }
  73.                   else
  74.                       if(keyCode==KeyEvent.VK_UP){
  75.                           add(0,-d);
  76.                       }
  77.                       else
  78.                           if(keyCode==KeyEvent.VK_DOWN)
  79.                           {
  80.                               add(0,d);
  81.                           }
  82.         }
  83.         public void keyReleased(KeyEvent event){
  84.             
  85.         }
  86.         public void keyTyped(KeyEvent event){
  87.             char keyChar=event.getKeyChar();
  88.             int d;
  89.             if(Character.isUpperCase(keyChar)){
  90.                 d=LARGE_INCREMENT;
  91.             }
  92.             else{
  93.                 d=SMALL_INCREMENT;
  94.             }
  95.             if(keyChar=='h'){
  96.                 add(-d,0);
  97.             }else
  98.                 if(keyChar=='l'){add(d,0);}
  99.                 else if(keyChar=='k')add(0,-d);
  100.                 else if(keyChar=='j')add(0,d);
  101.         }
  102.     }
  103. }
原创粉丝点击