JavaFX 2 GameTutorial第1部分

介绍

我相信大多数软件开发人员可能会在年轻人(年轻人)一生中的某一时刻被迫创建游戏来帮助他们学习编程语言(我知道我确实做到了)。 以前,我的第一台计算机实际上是Franklin Ace 1000 ,后来是Apple [] 。 在这些系统上开发游戏时,这非常具有挑战性。 对于初学者,您必须学习汇编语言(6502),实际上几乎没有工具来创建精灵(图形资产)。 我认为我最喜欢的一款游戏可能是第一款实时策略(RTS)游戏,是Rescue Raiders (1984)。

让我们向前迈进2012年,此后,计算机,图形工具包,库和游戏引擎已经走了很长一段路。 许多API都会提供很多屏蔽API用户的管道,以便他们可以专注于使游戏变得有趣和刺激。 谈到API JavaFX 2.x不仅是创建美观应用程序的出色UI工具包,而且还可以使游戏变得有趣。 使用JavaFX 2.x,您将能够创建可以消磨时间并带来数小时乐趣的游戏!

图1太空飞船的SVG

长大后我总是对科幻电影如“星球大战”和“ 星际迷航”着迷。 我一直想创建一个简单的顶视图显示游戏(2D),在其中我可以像经典游戏《小行星》一样控制飞船。 但是,随着时间的流逝,一位朋友与我分享了《 星际争霸 1》和《 母巢之战》,我感到非常惊讶。 我真的很喜欢今天的比赛,所以我想采用游戏的某些元素,例如使用鼠标指针和按钮(例如:Terran Battle Cruiser)导航部队和部队。

在此博客文章(第1部分)中,我将简要说明使用简单形状的简单太空船的游戏或导航。 在第1部分(此博客条目)中没有显示代码,而是一个简单的应用程序来演示飞船在最终游戏中的行为。 随着系列的进行,您会注意到渐进式的变化,例如酷炫的精灵,声音等。记住,最后一场比赛将是一艘宇宙飞船,避开敌舰并以声音效果向后射击。 该船将看起来像此博客条目开头所描述的船(图1)。

我想创建一系列博客条目( 六个部分 ),详细介绍如何创建JavaFX 2.x游戏的教程。 。 以下是该系列的简要摘要:

第1部分–简介( 单击此处以运行演示 )
第2部分– 游戏循环
第3部分-输入/(鼠标,键盘) 第4部分–精灵/碰撞 第五部分–声音 第六部分–结论性思想

需求与设计

  • 使用基本形状创建太空飞船的原型。
  • 根据鼠标右键单击的屏幕位置,顺时针或逆时针旋转飞船。
  • 按下主按钮时发射射弹。
  • 显示鼠标按下(x,y)屏幕坐标
  • 显示角度以旋转船头(船前)
  • 显示飞船旋转的方向(顺时针或逆时针)

图2中显示的是一个使用简单形状的简单原型,以帮助我们专注于数学。 一个好的原则是在投入大量时间来绘制图形资产之前,先创建一个功能原型。

图2太空飞船原型
  • (MX,MY)–鼠标按下(x,y)可以协调JavaFX Scene上的空间。
  • (vx,vy)–相对于船心的结束角或鼠标按下(x,y)坐标转换为笛卡尔坐标。
  • (ux,uy)–起始角或上次鼠标按下(x,y)坐标转换为相对于船中心的笛卡尔坐标。
  • U形角:船首旋转角度。 在笛卡尔坐标系(1,0)中,鼻子指向西或零度。 随着船舶逆时针旋转,角度会增加。 当沿顺时针方向移动时,旋转角度将为负数。
  • V角:船头应在其停止位置旋转的角度。 在笛卡尔坐标系(1,0)中,鼻子指向东或零度。 随着船舶逆时针旋转,角度会增加。 当沿顺时针方向移动时,旋转角度将为负数。
  • 方向:旋转船头以顺时针或逆时针旋转船。 当单击鼠标以在小于180度的角度旋转船舶时,船舶将转向鼠标单击,而不是转向大于180度的另一种方式(长距离)。

演示版

要求:

  • Java 7或更高版本
  • JavaFX 2.0或更高版本
  • Windows XP或更高版本(应该很快可用于Linux / MacOS)

飞船导航和武器系统的简单原型。

说明:

  • 右键单击(在Windows上)鼠标以飞船。
  • 主武器(在Windows鼠标上单击鼠标左键)以射击武器。

单击此处运行演示

参考文献

富兰克林Ace –老式计算机:http://www.vintage-computer.com/franklin.shtml

Apple] [ –老式计算机:http://en.wikipedia.org/wiki/Apple_II

救援攻略 –维基百科:http://en.wikipedia.org/wiki/Rescue_Raiders

星球大战 –电影数据库:http://www.imdb.com/title/tt0076759/

星际迷航 –电影数据库:http://www.imdb.com/title/tt0796366/

星际飞船 –维基百科:http://en.wikipedia.org/wiki/Star_Craft

星际飞船母巢之战 –维基百科:http://en.wikipedia.org/wiki/StarCraft:_Brood_War

http://en.wikipedia.org/wiki/Rescue_Raiders

参考:来自我们的JCG合作伙伴 Carl Dea的JavaFX 2 GameTutorial第1部分 ,位于Carl's FX博客上。


翻译自: https://www.javacodegeeks.com/2012/04/javafx-2-gametutorial-part-1.html

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

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

相关文章

虚拟现实-VR-UE4-认识UE4

VR的火热,让每个人都想参与一下, 公司在展会上面搞了一个VR的Demo,关注度超出预期,使得公司高层决定来个VR项目 所以 关于UE4 百度百科地址:http://baike.baidu.com/link?urlmEmbwOcqEuqtkfdu9lNdxVtWAkv0Q6UHZ4VgIHr…

java concurrent 例子_[Java Concurrent] 并发访问共享资源的简单案例

EvenGenerator 是一个偶数生成器,每调用一个 next() 就会加 2 并返回叠加后结果。在本案例中,充当被共享的资源。EvenChecker 实现了 Runnable 接口,可以启动新的线程执行 run() 任务,用于检测所指向的偶数生成器是否每次都返回偶…

OSGI实战第一章

第一章 解开OSGI的面纱 OSGI是什么?是Java平台的一个模块化层。模块化:软件应用程序的代码被分割为表示独立内容的逻辑单元,可简化开发,可通过强化逻辑模块的界限来提高可维护性。Java模块化的不足a) Java使用访问…

轻松完成Birt报告

这是使用Birt插件在Eclipse中构建报告的完整指南。 Birt或Business Intelligence and Reporting工具是一种无需编写太多Java代码即可生成报告的工具。 如果您使用的是ireport,那么您知道我在说什么:)(晶体报告..毫无意义&#xff…

MySQL 的 RowNum 实现

MySQL 下面没有RowNum,排序后序号却无法得到,比较麻烦! SELECT rownum:rownum1 rownum, CollectSn From(SELECT rownum:0,bbgmain.* FROM qbdb.bbgmain WHERE collectsn! ORDER BY collectsn limit 10) t转载于:https://www.cnblogs.com/hym-…

java jdbc事务管理_hibernate事务管理 (jdbc jta)

评论# re: hibernate事务管理 (jdbc jta)2007-07-29 10:18pigJTA事务的开始Transaction tx session.beginTransaction();应该不是这样吧,应该是从容器中获得。 回复 更多评论# re: hibernate事务管理 (jdbc jta)2007-07-29 12:35slxpig建议看看hibernate referen…

@Resource VS @Autowired

Resource 和 Autowired 均是用于bean注入的注解,都可以写在字段和setter方法上,如果都写在字段上,就无需写setter方法。 Autowired 由Spring的org.springframework.beans.factory.annotation.Autowired提供 默认byType方式注入,并且对象不能为…

用于Spring应用程序的Gradle原型

我发布了Gradle原型,可用于基于Springframework创建Java / Groovy应用程序。 当然,它不是一个真正的原型,因为这样的创作是不可能的 。不过,你可以创建,编辑和部署应用服务器很少的步骤。 对于可部署的软件项目而言&am…

java tm无响应_Java(TM) Platform SE binary 未响应 是怎么个情况?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼988098 [Thread-10] INFO sound.oo0O - Creating streaming player for music with id [faction_pirate_encounter_02_hostile.ogg]988099 [Thread-10] INFO sound.OooO - Playing music with id [faction_pirate_encounter_02_hos…

ROS and PCL install

ROS hydro安装指南: http://wiki.ros.org/cn/hydro/Installation/Ubuntu (加ppa源后直接安装) Linux OpenCV安装指南:http://blog.sciencenet.cn/blog-571755-694742.html (从源代码编译) PCL:…

揭开Python科学计算的面纱

春牛春杖。无限春风来海上。便与春工。染得桃红似肉红。 春幡春胜。一阵春风吹酒醒。不似天涯。卷起杨花似雪花。 标准的Python中用列表保存一组值,可以当做数组使用,但是由于其值类型任意,所以列表中保存的是指针,这样的话保存一…

FXML:使用BuilderFactory的自定义组件

当您想使用FXML时,您将需要能够添加自己的组件。 这很容易,您只需要添加一个import语句。 FXML文件中以大写字母开头的元素将被解释为实例,如果它们是Java Bean,则最重要:如果它们具有无参数的标准构造函数&#xff0c…

Excel 一键上传到数据库

<a class"edit" id"batchImport"> 批量导入 </a> js代码弹窗&#xff1a; $("#batchImport").click(function(){ //弹窗弹窗下列内容 var html<form id"execlForm" method"post" enctype&quo…

SQL——实例记录(对查询结果排行号)

select 订单编号, DENSE_RANK() over(order by 订单编号) from test 排序结果&#xff1a; 55678-0-1 1 55678-0-1 1 33454-0-1 2 33454-0-1 2 33454-0-1 2 这种是按照订单不同的顺序依次往后排 当然也可以在 over后面加上你想要的起始号 例&#xff1a;DE…

TeamCity构建依赖项

介绍 构建依存关系的主题既不重要也不是次要的。 各种构建工具从不同的角度处理此主题&#xff0c;从而提供各种解决方案&#xff0c;每种解决方案都有其优点和缺点。 熟悉发行版和快照依赖项的Maven和Gradle用户可能不了解TeamCity快照依赖项&#xff0c;或者认为他们与Maven…

复选框操作checked选中为true,反之为False,也可以赋值为true,false

转载于:https://www.cnblogs.com/shiluoliming/p/6518236.html

java 个税计算_【JAVA300例】10、计算个人所得税

逻辑是这样的。每个等级计算的系数都不一样。分别有多个档位。要判断处于什么档位然后用特殊的公式去计算。原版是从小到大判断&#xff0c;每次写条件很烦。这里换成从大到小。节省敲代码时间。import java.util.Scanner;public class Test010{public static void main(String…

Java是否越来越接受静态导入?

曾经有一段时间&#xff0c;至少在礼貌的社会中&#xff0c;人们普遍认为使用“ 不是 ”一词是不可接受的。 确实&#xff0c;那时&#xff08;也许直到今天&#xff09;&#xff0c;许多人确实&#xff08;也确实&#xff09;认为不是一个真实的词。 尽管这个词并没有 引起争议…

Stream 工具方法

inputstream 转 string 1、使用字符流 InputStream is TestZhimaCustomerCertificationInitialize.class.getClassLoader().getResourceAsStream("config/rsa_private_key_pkcs8.pem"); InputStreamReader isr new InputStreamReader(is); BufferedReader br new…

从0开始学习 GitHub 系列汇总笔记

本文学习自Stromzhang, 原文地址请移步&#xff1a;从0开始学习 GitHub 系列汇总 我的笔记&#xff1a; 0x00 从0开始学习GitHub 系列之[初识GitHub] GitHub 影响力 a.全球顶级科技公司纷纷加入 GitHub &#xff0c;并贡献他们自己的项目代码 Google: https://github.com/goog…