学了这一章的内容,学会了如何创建框架,设置组件等的知识,收获了很多。

下面一个程序是我从网上学到的,目的是使用画笔画一个坦克。程序如下:

import javax.swing.*;
import java.awt.*;

/**
 *  功能: 画出坦克
 *  步骤
 *    1. 创建坦克类Tank
 *    2. 创建我的坦克类Hero 继承 Tank
 *    3. 创建我的面板MyPanel 继承 JPanel
 *    4. 在TankGame1类中增加MyPanel
 *    
 */


public class TankGame1 extends JFrame
{
        //创建一个面板对象mp
    MyPanel mp = null;        
    
    public static void main(String[] args)
    {
        TankGame1 mtg = new TankGame1();
    
    }
    
    //构造函数
    public TankGame1()
    {
        mp = new MyPanel();
        this.add(mp);                //增加进面板中
        this.setSize(400, 300);  // 大小
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);     //显示
    }
    
}

//我的面板
class MyPanel extends JPanel
{
    //定义一个我的坦克
    Hero hero = null;
    
    //构造函数
    public MyPanel()
    {
        hero = new Hero(100,100);
    }
    
    //重新paint
    public void paint(Graphics g)
    {
        super.paint(g);
        
        //定下活动区域
        g.fillRect(0, 0, 400, 300);
        
                //调用函数drawTank画出我的坦克
        this.drawTank(hero.getX(), hero.getY(), g, 0, 1);
        
    }
    
    //画出坦克的函数
    public void drawTank(int x, int y, Graphics g, int direct, int type)
    {
        
        //判断是什么类型的坦克
        switch(type)
        {
        case 0:
            g.setColor(Color.cyan);
            break;
        case 1:
            g.setColor(Color.yellow);
        }
        
        //判断方向
        switch(direct)
        {
        //向上
        case 0:
            //画出我的坦克
            //1.画出左边的矩形
            g.fill3DRect(x, y, 5, 30,false);
            
            //2. 现出右边的矩形
            g.fill3DRect(x+15, y, 5, 30,false);
            
            //3. 画出中间矩形
            g.fill3DRect(x+5, y+5, 10, 20,false);
            
            //4. 画出圆形
            g.fillOval(x+5, y+10, 10, 10);
            
            //5. 画出线
            g.drawLine(x+10, y+15, x+10, y);
            
        }
    }
}



//坦克类
class Tank
{
    int x = 0;        //表示坦克的横坐标
    int y = 0;        //表示坦克的纵坐标
    
    Tank(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
    
    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
    
}


//我的坦克
class Hero extends Tank
{
    public Hero(int x, int y)
    {
        super(x, y);
    }
}

比较麻烦,用的时间比较多,应该还是不熟练,整个的程序框架和代码都需要更多的练习来达到更好的效果。


 posted on 2017-11-23 22:53  陌小喵^ō^  阅读(147)  评论(1编辑  收藏  举报