Java Swing手搓坦克大战遇到的问题和思考

1.游戏中的坐标系颇为复杂

像素坐标系还有行列坐标,都要使用,这之间的互相转化使用也要注意

2.游戏中坦克拐弯的处理,非常重要

由于坦克中心点是要严格对齐到一条网格线,并沿着这条线前进的,如果拐弯不做处理,很可能坦克就不再对齐到网格线了。这将影响炮弹的发射和消除瓦片地图的功能实现。

3.关于坦克前进的步进问题

  看到一个NB闪闪的坦克大战游戏制作视频,在视频中作者的坦克前进也是一格一格的,这样其实体验是非常糟糕的,卡顿感,非常明显,可是作者的思路是利用补间动画解决了这个问题,我惊呆了。值的观摩和学习。目前是较小固定像素个数不断前进。

  之前看过一个视频也是讲这个问题的,作者却没说这个问题,很迷惑,因为自己实现了以后发现,问题很严重。走一步,跨一格,卡的不能看。

  上面这2个视频是从B站看到的,前者是C++调用EasyX实现。后者是C语言直接调用Windows图形API实现。
在这里插入图片描述在这里插入图片描述

4.游戏效果视频

这个视频就是目前的最终效果

业余手搓坦克大战游戏

5.剩余项目计划

目前为止已实现地图,玩家坦克在地图中行走。初步打算完成第5步后发布第一个版本,已经完成。
下一步,

  • 1.玩家发射炮弹
  • 2. 炮弹命中地图瓦片的爆炸效果、逻辑处理
  • 3. 敌军坦克诞生、行走、发射炮弹
  • 4. 双方炮弹碰撞抵消,被炮弹击中爆炸效果、逻辑实现
  • 5. 游戏game over逻辑处理
  • 6. 玩家消灭坦克或吃道具的分数计算
  • 7. 道具对玩家坦克外观和炮弹火力影响
  • 8. 道具的出现位置和动画逻辑
  • 9. 关卡地图的实现
  • 10. 过关的处理
  • 11.严重bug的修复
  • 12. …还有很多

6.思考

  1. 2个运动的物体如何判断碰撞更高效
  2. 敌军坦克寻找基地和玩家坦克,是不是涉及到寻路算法(A*…)
  3. 物理系统如何应用到游戏中
  4. 2022、2023至今AI已经如此成熟,写代码也是轻车熟路,我还在用古老的技术尝试开发2D游戏,真的有必要吗?意义大吗?
  5. …还有一些

在这里插入图片描述

7.感悟

刚开始觉得坦克大战还是很容易的,没想到后续做起来还是挺复杂的工程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/329265.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二刷Laravel 教程(构建页面)总结Ⅰ

L01 Laravel 教程 - Web 开发实战入门 ( Laravel 9.x ) 一、功能 1.会话控制(登录、退出、记住我) 2.用户功能(注册、用户激活、密码重设、邮件发送、个人中心、用户列表、用户删除) 3.静态页面(首页、关于、帮助&am…

【二】使用create-vue创建vue3的helloworld项目(推荐)

create-vue 官网:快速上手 | Vue.js create-vue 是 Vue3 的专用脚手架,使用 vite 创建 Vue3 的项目,也可以选择安装需要的各种插件,使用更简单。 1、使用方式 npm create vuelatest这个命令会安装和执行 create-vue&#xff0…

【Project】TPC-Online Module (manuscript_2024-01-07)

PRD正文 一、概述 本模块实现隧道点云数据的线上汇总和可视化。用户可以通过注册和登录功能进行身份验证,然后上传原始隧道点云数据和经过处理的数据到后台服务器。该模块提供数据查询、筛选和可视化等操作,同时支持对指定里程的分段显示和点云颜色更改…

2022年多元统计分析期末试题

2023年多元统计分析期末试题 1.试论述系统聚类、动态聚类和有序聚类的异同之处。 2、设 X {X} X~ N 3 {N_3} N3​(μ,Σ),其中 X {X} X ~ ( X 1 {X_1} X1​, X 2 {X_2} X2​, X 3 {X_3} X3​),μ (1,-2,3)‘,Σ [ 1 1 1 1 3 2…

【Python机器学习】线性模型——用于多分类的线性模型

很多线性分类模型只使用与二分类问题,将二分类算法推广到多分类算法的一种常见方法是“一对其余”方法。在“一对其余”方法中,对每个类别都学习一个二分类模型,将这个类别和其他类别尽量区分,这样就生成了与类别数相同的二分类模…

qt三大控件

1.QListWidget控件 先在ui界面将 QListWidget拖出来竖直对齐 再去代码中实现文本插入 两种插入方式 方法1 //listWidget使用 有左右中间对齐需求QListWidgetItem * itemnew QListWidgetItem("床前明月光"); // //上面只是独立的一句话,没有关联起来ui-&g…

JavaWeb实验报告

JavaWeb实验报告 JavaWeb实验报告 2024 年 1 月 7 日 课程名称: JavaWeb 实验名称: 期末作业 班级: 姓名 同组人: 指导教师评定&#xff…

Qt qDebug基本的使用方法详解

目录 qDebug基本用法输出字符串输出变量值1输出变量值2支持流式输出输出十六进制去除双引号和空格调试输出级别 自定义类型输出自定义日志信息的输出格式示例占位符设置环境变量 关闭QDebug输出Qt工程VS工程 在VS工程中如何查看qDebug输出 DebugView下载 qDebug基本用法 qDebug…

PyTorch|构建自己的卷积神经网络——nn.Sequential()

之前在构建神经网络时,我们一般是采用这种方式,就像这样: class Network1(nn.Module): def __init__(self): super(Network1,self).__init__() self.conv1 nn.Conv2d(in_channels3, out_channels6, kernel_size5) …

[算法应用]dijkstra算法的应用

先看一眼原始dijkstra算法,参考自dijkstra算法C实现_c实现djikstra-CSDN博客 分为三步 找到当前最优的把当前最优的,不参与后面的更新逐个比较是否更新 dijkstra算法的应用 题目大概是要从图上找一条权值不减的路径,且要经过最多的点。 所以…

基于 HTTPS 协议配置 Git 连接 GitHub

文章目录 0.安装 Git1.注册 GitHub 账号2.配置 Git 的用户名和邮箱3.远程连接 GitHub 有两种传输协议4.基于 SSH 协议配置 Git 连接 GitHub5.基于 HTTPS 协议配置 Git 连接 GitHub5.1 创建 GitHub 个人访问令牌5.2 有两种方法将本地仓库和远程仓库关联起来5.2.1 第一种方法&…

精彩推荐 |【Java技术专题】「重塑技术功底」攻破Java技术盲点之剖析动态代理的实现原理和开发指南(上)

攻破Java技术盲点之剖析动态代理的实现原理和开发指南 背景介绍静态代理和动态代理动态代理与静态代理的区别 进入正题重温:静态代理实现静态代理案例静态代理的弊端 重温:动态代理Java动态代理InvocationHandlerJava动态代理的实现下面看具体的代码实例…