java 板


LINE

※ 引述《[email protected] (习惯与应付)》之铭言: : 请问要作一个类似打地鼠的程式 : 他的逻辑程序到底该怎样呢~~>"< : 完全没头绪 : 关於如何地鼠何时出现 : 又要如何控制它出现的时间 : 又要如何控制当我点到正确的位置时他会消失 : 那地鼠所在的位子固定的话 : 那是不是就控制它出现的时机就好呢 : 可是如果位置固定 : 我要如何判断滑鼠点的位子是正确的呢 : 整各逻辑好乱喔~~>"< 还是没案子可以写,所以拿这个来练打字一下 (否则对不起手上的 TaClick 阿) 抬头看一下发信站台? [惊] 这就不好意思递名片,问要不要作业外包了 [逃] 你的问题,有一些是 Java 技术的问题 有一些则是单纯的逻辑问题... 我假设你的目标是这个游戏,但是作某种程度的简化 http://www.eyezmaze.com/tontie/v1/index.html (有个实品总是比较好说明...) 从地鼠开始想起... 在 eyezmaze 当中的地鼠有很多属性 不过,我们意思意思就好,简化成两个属性 血量、打到的得分 既然都搞了属性了,当然就要多生几种地鼠,增加丰富性 所以地鼠的类别大概就是 public class Shrew { private int hp; private int hitScore; private int missScore; private Shrew(int hpAmount, int hitS, int missS){ this.hp=hpAmount; this.hitScore=hitS; this.msiiScore=missS; } public static Shrew aShrew(){ return new Shrew(1, 100, 25); } public static Shrew aBigShrew(){ return new Shrew(2, 200, 25); } //高兴的话,可以多生几种地鼠 //下面省略 getter //当地鼠被打到的时候,要扣 hp public void hit(int amount){ this.hp -= amount; } } 地鼠准备好了,接下来就是想 "洞" 要怎麽搞 洞要负责 "生" 出地鼠,时间到了要把地鼠藏起来,然後扣分 另外还要承受攻击,如果玩家乱打没地鼠的洞要给他惩罚性的扣分 万一 (?) 地鼠被打到 hp 小於 1,还要帮他收屍 当然还免不了要提供一些状态资讯 例如现在的地鼠是哪一只... etc 所以,洞的类别大概是长成这样子: public class Hole { private Shrew shrew; private int showTime; public Hole(){} public void createShrew(int race, int showT){ shrew = Shrew.newShrew(race); showTime = showT; } public int receiveShot(int amount){ if(shrew!=null){ shrew.hit(amount); if(shrew.getHp()<1){ int score = shrew.getHitScore(); shrew = null; return score; }else{ return 0; } }else{ return Parameter.Disorder_Penalty; } } public int cycleProcess(){ if(shrew!=null){ showTime--; if(showTime==0){ int score = -1 * shrew.getMissScore(); shrew=null; return score; } } return 0; } public Shrew getShrew(){ return shrew; } } 有了洞,接下来要想的是游戏机台的设计 机台要有一个属性,就是纪录玩家的状态 就算只打算纪录分数,不过还是包成一个物件 这样子哪天要扩充的话,写起来会比较... 快乐? 当然,还要有一个属性,就是洞 因为洞有很多个,所以我就开一个阵列来存 我想,让机台每 x 秒算一个回合 每回合自动决定某个空的洞是不是要有地鼠冒出来 以及检查有地鼠的洞,是不是该让地鼠回家安养天年 既然这样子,就偷偷用 java.util.Timer 来作这件事情 省时又省力 \囧/ 最後,就是要有一个 method,让使用者打机台 整个程式码,大概长成这样 import java.util.Timer; import java.util.TimerTask; public class PlatForm { private Hole hole[]; private Player player; private Timer timer; private int cycleLength; public PlatForm(Player p, int holeAmount){ this.player = p; this.hole = new Hole[holeAmount]; initHole(); } public void start(){ TimerTask cycleTask = new TimerTask(){ public void run() { cycleRoutine(); } }; cycleLength=500; timer = new Timer(); timer.scheduleAtFixedRate(cycleTask, 0, cycleLength); } private void cycleRoutine() { for(int i=0; i<hole.length; i++){ if(hole[i].getShrew()==null){ callShrewToWorkAtHole(i); }else{ player.setScore( player.getScore()+hole[i].cycleProcess() ); } } } public void fireInTheHole(int i, int amount){ player.setScore( player.getScore()+hole[i].receiveShot(amount) ); } private void callShrewToWorkAtHole(int i) { //这是会让玩家喷血的写法 //实际上要依现况调整地鼠出现的机率 double ratio = Math.random(); if(ratio>0.9){ hole[i].createShrew(Shrew.BIG, 6); return; } if(ratio>0.5){ hole[i].createShrew(Shrew.NORMAL, 6); return; } } private void initHole() { for(int i=0; i<hole.length; i++){ this.hole[i]=new Hole(); } } public Hole[] getHole() { return hole; } public void stop() { timer.cancel(); } } 这些写好之後,剩下来的就是画面的制作 你用 JButton 来实作也好 用 Graphic 刻画面也好 只要将玩家的操作,作一个 mapping 到 index 然後呼叫 PlatFrom.fireInTheHole() 就轻松自在啦... 後头就不写了... 整个写下来,堪玩的版本大概三个小时就能生出来啦... ===== 学弟想听现场版的话,可以在礼拜二来上最後一次计概辅导 哈哈哈... [逃] -- 侃侃长论鲜窒碍 http://www.psmonkey.idv.tw 众目睽睽无心颤 telnet://legend.twbbs.org 茕居少聊常人事 杀头容易告白难 拜托不要,我对女案主过敏 \囧/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.204.16.17







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP