• 关于图形程序设计


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

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

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

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

    
    
  • 相关阅读:
    中层人才轮岗,张勇宣布阿里新一轮组织架构调整
    公司倒闭 1 年了,而我当年的项目上了 GitHub 热榜
    为什么别人的行业都那么让人羡慕
    ClickHouse 高级(五)数据一致性(重点)
    ClickHouse 高级(四)优化(4)查询优化
    ClickHouse 高级(二)优化(2)建表优化
    ClickHouse 高级(一)优化(1)Explain 查看执行计划
    ClickHouse基础(八)使用基础(5)ClickHouse 的安装(win10)
    【简单的原创】div简单轮换显示
    BZOJ 5494: [2019省队联测]春节十二响 (左偏树 可并堆)
  • 原文地址:https://www.cnblogs.com/twdc136/p/7887477.html
Copyright © 2020-2023  润新知