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聊天室的界面实现,结合昨天实现的多线程多客户端功能,实现完整聊天室基本功能应该没问题。有空的话继续实现该项目后续功能。加油!!!

太空大战-GUI实现(1)的更多相关文章

  1. 用Html5结合Qt制作一款本地化EXE游戏-太空大战(Space War)

    本次来说一说如何利用lufylegend.js引擎制作一款html5游戏后将其通过Qt转换成EXE程序.步骤其实非常简单,接下来就一步步地做一下解释和说明. 首先我们来开发一个有点类似于太空大战的游戏 ...

  2. Python+Pygame开发太空大战/飞机大战完整游戏项目(附源代码)

    项目名称:太空大战 开发环境:Python3.6.4 第三方库:Pygame1.9.6 代码编辑器:Sublime Text 先来看一下游戏画面吧!  游戏画面动态且丰富哦!   需求分析 利用Pyt ...

  3. threejs和3d各种效果的学习

    写给即将开始threejs学习的自己,各种尝试,各种记忆.不要怕,灰色的年华终会过去. 一个技术学习的快慢,以及你的深刻程度,还有你的以后遇到这个东西的时候的反应速度,很大程度上,取决于你的博客的深刻 ...

  4. 剖析虚幻渲染体系(14)- 延展篇:现代渲染引擎演变史Part 1(萌芽期)

    目录 14.1 本篇概述 14.1.1 游戏引擎简介 14.1.2 游戏引擎模块 14.1.3 游戏引擎列表 14.1.3.1 Unreal Engine 14.1.3.2 Unity 14.1.3. ...

  5. 【unity3d游戏开发脚本笔记之一:坐标系选择对物体运动的影响】

    时间:2016年9月24日17:38:21   作者:yexiaopeng 博客园     在unity3d的世界中,其坐标系可分为四种,世界坐标系-WorldSpace   本地坐标系-LocalS ...

  6. Right Column - 右侧栏目

    function share(sType){ var sName = "Yorhom\'s Game Box"; var title='Yorhom\'s Game Box', _ ...

  7. ActionScript通用开发框架

    ActionScript 3(简称as)自2006年诞生以来,出现了一大批很优秀框架.就我的知识领域,运用包括pureMVC.pushButton Engine(组件框架).Robotlegs.Ash ...

  8. 传智播客C/C++学员荣膺微软&Cocos 2d-x黑客松最佳创新奖

     6月30日,历时32小时的微软开放技术Cocos 2d-x 编程黑客松在北京望京微软大厦成功落下帷幕,这是微软开放技术首次联合Cocos 2d-x 在中国举办黑客松.此次活动共有包括传智播客C/ ...

  9. 关于AR,你想要的全在这儿了

    定义 增强现实(Augmented Reality,简称AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动.这种技术估计由19 ...

随机推荐

  1. odoo中Controller

    一:Controller 一般通过继承的形式来创建controller类,继承自odoo.http.Controller. 以route装饰器来装饰定义的方法,提供url路由访问路径: class M ...

  2. Python -- raw_input函数

    使用raw_input函数,它会把所有的输入当作原始数据(raw data),然后将其放入字符串中: >>> input("Enter a number: ") ...

  3. 公有组件ShowCodeList实现原理之一一下拉框的实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 【LeetCode】面试题62. 圆圈中最后剩下的数字

    题目:面试题62. 圆圈中最后剩下的数字 这题很有意思,也很巧妙,故记录下来. 官方题解思路,是约瑟夫环的数学解法: 我们将上述问题建模为函数 f(n, m),该函数的返回值为最终留下的元素的序号. ...

  5. jquery 判断单/复选框是否被选中

    1 <div> 2 <span>高亮:</span><input type="checkbox" name="light&quo ...

  6. Jenkins远程命令执行漏洞(CVE-2018-1000861)

    此漏洞没有回显,直接利用orange的exp执行命令反弹shell 工具地址https://github.com/orangetw/awesome-jenkins-rce-2019 web服务器下写1 ...

  7. SQL Server存储过程执行一个带返回值(output)的存储过程

    语法如下: --存储过程一CREATE PROCEDURE testProc @out VARCHAR(500) OUTPUT AS BEGIN SET @out='操作成功' RETURNEND - ...

  8. 学废了系列 - WebGL与Node.js中的Buffer

    WebGL 和 Node.js 中都有 Buffer 的使用,简单对比记录一下两个完全不相干的领域中 Buffer 异同,加强记忆. Buffer 是用来存储二进制数据的「缓冲区」,其本身的定义和用途 ...

  9. Nacos 笔记

    Nacos 笔记 目录 Nacos 笔记 1. Nacos简介 1.1 主流配置中心对比 1.2 主流注册中心对比 1.3 Nacos特性 2. 安装启动 支持外部 MySQL 3. 配置管理 3.1 ...

  10. 代码部署:使用 nginx 代理到云服务器 ( windows 系统)

    在部署之前我们首先要了解什么是nginx,它又可以做什么 Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,00 ...