各位板友好
小弟目前是大一生,期末有份Java视窗小游戏制作
我们小组讨论出来后,决定制作2D横向动作卷轴游戏(类似越南大战、或是Rabi-Ribi),
只打算做1~3关,可能不会做的很完整
然后我主要是负责程式撰写的部分,我没有带入什么引擎,目前都是Java本身的套件
先简述一下目前我所做的部分
我目前绘制画面的方法是
先将角色预先设定好在地图中的位置在哪,然后以角色为中心去绘制画面(包含地图)
地图的部分用阵列储存整数,然后用function去读取数字判断要贴上哪种图片
让物体左右移动也已经做出来了,障碍物判断暂时也已经做好了
然后开了两个执行绪,一个接收键盘指令,一个做画面绘制
然后我现在要做跳跃的部分遇到了困难
我想要达成的效果是:按下按键后,物体会上移两格,但是能看得到上移一格的时候
上移两格后,再开始落下
结果实作后发现,因为我把接收指令跟绘制画面用不同执行绪的关系
所以好像会先计算完毕之后才做绘制画面
(同一时间只会有一个执行绪执行中,没错吧?)
于是我把panel的repaint()方法安插在跳跃的程式码中,但是又好像是计算太快的关系
看不到上移一格的时候,又不知道该怎么做延迟
还有一个问题是,我想到不能单纯的把落下的部分放在跳跃后面
如果我从高处的平台平移到可以落下的地方,也要做到物体自动落下
所以我想到落下这一部份应该要移到背景永久执行(?
但是这部分不知道该怎么撰写
尝试撰写了while循环去做落下的程式码,做跳跃的时候会因为判断到可以落下
所以就执行落下,结果就是物体不断被压着,跳不起来了
也想请教这部分的设计该怎么处理
附上我的整份code,移动的部分在character.java
绘制画面跟接收键盘在WindowsUI.java
https://goo.gl/kDqDs4
感谢各位!