1.复习GUI后,第一天实现的效果

2. 项目实现思路

基本的窗口界面实现就不讲了,源码都看得懂的,这里只说其中比较重要的几个功能的实现。

  • 面板的绘制(所有图形的绘制)

    首先,需要在GamePanel中重写PaintComponent方法,该方法有一个画笔参数,之后所有图形都是在这个方法中进行绘制的;

        // 绘制面板,游戏中所有东西都用这支画笔
    @Override
    protected void paintComponent(Graphics g) {
    super.paintComponent(g);//清屏
    //积分板
    g.setColor(Color.orange);
    g.setFont(new Font("黑体", Font.PLAIN, 25));
    g.drawString("得分:" + score, 75, 55);
    g.drawString("生命:" + blood, 300, 55);
    g.drawString("时间:" + time, 650, 55);
    GameData.player.paintIcon(this, g, playerX, playerY);
    }
  • 战机的左右移动

    1.首先,分析功能需求:战机每隔1秒移动一段距离,当碰到窗口边缘时反向移动。

    2.为了实现每隔1秒执行方法,我引入了计时器来绑定事件刷新(即:每隔150毫秒执行一次监听事件)

    //定时器,每隔一秒执行一次actionPerformed()事件监听,this实现了监听方法
    Timer timer = new Timer(150, this);//100毫秒=1秒

    3.在实现的监听方法中,编写左右移动的逻辑

        // 事件监听
    // 每隔一秒刷新一次
    @Override
    public void actionPerformed(ActionEvent e) {
    if ("R".equals(fx)){
    playerX += 15;
    }else if ("L".equals(fx)){
    playerX -= 15;
    }
    // 边界判断
    if (playerX>=875){
    fx="L";
    }else if (playerX<=25){
    fx="R";
    }
    repaint();//重绘
    //开启定时器
    timer.start();
    }

    4.注意点:

    ​ 4.1在每次执行方法完后记得重绘并开启计时器

        repaint();//重绘
    //开启定时器
    timer.start();

    ​ *4.2 初次创建时也要开启计时器

        public GamePanel() {
    this.setBackground(new Color(94, 63, 107));
    //开启定时器,让飞船一秒刷新一次
    timer.start();
    }

3.总结

好了,今天就做了这么多,还有很多重要功能没有实现,比如,计分板数据更新、射击敌机等。明天先把socket聊天室的界面实现,结合昨天实现的多线程多客户端功能,实现完整聊天室基本功能应该没问题。有空的话继续实现该项目后续功能。加油!!!

最新文章

  1. 榮耀6 Plus將是一部沒有對手的手機
  2. 3D Touch集成过程整理
  3. NDK编译FreeImage
  4. unity HideInInspector 默认值 坑 记录 bug
  5. ArrowDrawable
  6. Tuple元组
  7. Uniform resource name
  8. Microsoft Visual Studio 2015 python 安装 mysql-python 出错解决
  9. ClassLoader机制:一个类何时会被虚拟机初始化?
  10. 《阿里巴巴Java开发规约》插件使用介绍
  11. TP3.2.3 接入银联支付
  12. .net Core连接MongoDB
  13. spring 代码中获取ApplicationContext(@AutoWired,ApplicationListener)
  14. ROS_Kinetic_19 群机器人框架示例(micros swarm framework)
  15. week 10--了解原型设计的工具
  16. zookeeper选举流程
  17. python Requests 的一些高级特性
  18. UIButton高亮状态卡顿
  19. java内存性能调优编码注意
  20. Liunx软Raid实现

热门文章

  1. javascript学习(五)之标准对象
  2. 新建一个DJango项目
  3. 01.泛型Generic
  4. joomla 3.7.0 (CVE-2017-8917) SQL注入漏洞
  5. DC-4靶机
  6. Nacos 自动更新配置不生效问题
  7. RSA加密算法学习
  8. 30K入职腾讯,全靠这份606页的Android面试指南
  9. python 将Mnist数据集转为jpg,并按比例/标签拆分为多个子数据集
  10. JunAMS v1.2.1.20190403代码审计笔记