2024年最全坦克大战--Java实现(附源码),一线互联网公司面经总结

2021年Java中高级面试必备知识点总结

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。

本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。

目录:

(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

部分内容:

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

随心所欲下载所有歌曲,可以更换为自己喜欢的背景音乐

功能阐述

1、通过键盘控制我方坦克移动,及发射子弹

2、敌方英雄随机移动及发射子弹

3、使用对象池存储敌方英雄

4、碰撞检测

5、敌方英雄被我方子弹打中检测,我方英雄被敌方子弹打中检测,我方英雄与敌方英雄碰撞检测,子弹打中碰撞块的检测并移除碰撞块,子弹打中子弹碰撞检测,我方与道具碰撞检测

6、随机敌方生成

7、道具生成

8、多条生命控制

9、爆炸动画、移动动画、玩家初始化动画、敌方特殊敌机动画

10、控制控制不同的敌方类型、子弹的级别、道具类型来实现对不同敌机的操作

此程序运行背景音乐即刻播放,战争的快感一触即发!

关键代码

Tankclient


import java.awt.*;

import java.awt.event.*;

import java.awt.image.BufferedImageOp;

import java.io.File;

import java.nio.channels.FileLock;

import java.util.List;

import java.util.ArrayList;



import javax.imageio.ImageIO;

import javax.swing.filechooser.FileView;



public class Tankclient extends Frame {

    public static final int GAME_WIDTH = 800;//定义新的常量

    public static final int GAME_HEIGHT = 600;



    Tank myTank = new Tank(50, 50, true, Tank.Direction.STOP, this);//定义Tank

    Wall w1 = new Wall(100, 200, 20, 150, this), w2 = new Wall(300, 100, 300, 20, this);



    List<Explode> explodes = new ArrayList<Explode>();

    List<Missile> missiles = new ArrayList<Missile>();//利用容器加多发子弹

    List<Tank> tanks = new ArrayList<Tank>();



    Image offScreenImage = null;//定义屏幕背后背景图片

    Blood b = new Blood();

    private File file;





    public void paint(Graphics g) { //重写paint方法

        Object bg = null;



        Toolkit toolkit = Toolkit.getDefaultToolkit();

        Image image = toolkit.getImage("data\\bg.jpeg");

        g.drawImage(image, 0, 0, null);//背景图片

        g.drawString("missiles count:" + missiles.size(), 10, 50);

        g.drawString("explodes count:" + explodes.size(), 10, 70);

        g.drawString("tanks count:" + tanks.size(), 10, 90);

        g.drawString("tanks life:" + myTank.getLife(), 10, 110);





        if (tanks.size() <= 0) {

            for (int i = 0; i < 5; i++) {

                tanks.add(new Tank(50 + 40 * (i + 1), 50, false, Tank.Direction.D, this));

            }



        }

        for (int i = 0; i < missiles.size(); i++) {

            Missile m = missiles.get(i);

            m.hitTanks(tanks);

            m.hitTank(myTank);

            m.hitWall(w1);

            m.hitWall(w2);

            m.draw(g);

            //if(!m.isLive()) missiles.remove(m);//出界后去除这个子弹

            //else m.draw(g);

        }

        for (int i = 0; i < explodes.size(); i++) {

            Explode e = explodes.get(i);

            e.draw(g);

        }

        for (int i = 0; i < tanks.size(); i++) {

            Tank t = tanks.get(i);

            t.collidesWithWall(w1);

            t.collidesWithWall(w2);

            t.collidesWithTanks(tanks);

            t.draw(g);

        }



        myTank.draw(g);

        myTank.eat(b);

        w1.draw(g);

        w2.draw(g);

        b.draw(g);



    }



    public void update(Graphics g) {//调用update方法

        if (offScreenImage == null) {

            offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);//创建creatImage

        }

        Graphics gOffScreen = offScreenImage.getGraphics();

        Color c = gOffScreen.getColor();

        gOffScreen.setColor(Color.GREEN);//新的颜色

        gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);//用背景颜色画一个方块

        gOffScreen.setColor(c);//设回原来的颜色

        paint(gOffScreen);//调用paint方法

        g.drawImage(offScreenImage, 0, 0, null);//图片一次性画到前面





    }



    public void lauchFrame() {

        for (int i = 0; i < 10; i++) {

            tanks.add(new Tank(50 + 40 * (i + 1), 50, false, Tank.Direction.D, this));

        }

        this.setLocation(400, 300);//左上角点出现的位置

        this.setSize(GAME_WIDTH, GAME_HEIGHT);//宽800高600

        this.setTitle("TankWar");//设置标题

        this.addWindowListener(new WindowAdapter() {    //匿名类监听类



            public void windowClosing(WindowEvent e) {    //重写父类

                System.exit(0);   //正常退出

            }

        });

        this.setResizable(false);//不改变窗口大小

        this.setBackground(Color.GREEN);//设置背景色



        this.addKeyListener(new KeyMonitor());//键盘监听器

        setVisible(true);



        new Thread(new PaintThread()).start();//启动线程



        new Thread(new Runnable() {

            @Override

            public void run() {

                new Music().playmusic();

            }

        }).start();

    }





    public static void main(String[] args) {

        Tankclient tc = new Tankclient();

        tc.lauchFrame();

    }



    private class PaintThread implements Runnable {   //内部类



        public void run() {

            while (true) {//不停顿循环

                repaint();//调用外部包装类

                try {

                    Thread.sleep(50);

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

            }



# 知其然不知其所以然,大厂常问面试技术如何复习?

**1、热门面试题及答案大全**

面试前做足功夫,让你面试成功率提升一截,这里一份热门350道一线互联网常问面试题及答案助你拿offer

![](https://img-blog.csdnimg.cn/img_convert/b4bef49fe7200b78e4da7027cf9ee64c.webp?x-oss-process=image/format,png)

**2、多线程、高并发、缓存入门到实战项目pdf书籍**

![](https://img-blog.csdnimg.cn/img_convert/b67fb45d78ee7a404d3af2a44517563e.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/806380b7e236f456e391df5cd5e279ff.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/559a5dd8b43c09d1f031aab562179f73.webp?x-oss-process=image/format,png)

**3、文中提到面试题答案整理**

![](https://img-blog.csdnimg.cn/img_convert/0ed518a6541fd2170933e9d93e7e1c6c.webp?x-oss-process=image/format,png)

**4、Java核心知识面试宝典**

覆盖了**JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入**

![](https://img-blog.csdnimg.cn/img_convert/62181bfc10406a818a4ab315b8f01a41.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/b2956a46eec28334f25f50bf16359be1.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/ee9411efbaead4351db0a00d33f9c7ce.webp?x-oss-process=image/format,png)

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**



**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入**

[外链图片转存中...(img-CYBqNMhG-1715107031867)]

[外链图片转存中...(img-ujvg627o-1715107031868)]

[外链图片转存中...(img-Pf1sIB49-1715107031868)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**



**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值