創作內容

0 GP

簡化程式

作者:An Ting Shi│2008-04-02 20:06:16│巴幣:0│人氣:453
根據我那差點被當掉的c++
在第一章裡面寫到:最好的程式是簡單易懂,不要太過繁雜
但也要簡化到讓人看得懂

所以我先來簡化之前的戰鬥程式
順便改一些錯誤
(抱歉,上次發文有些部份沒看清楚,導致有些前後不一....)
上次的程式碼
;mode800
*define
game
*start
bg":c;Germany_1006.jpg",13,1000;背景
ld c,":a;敵人.jpg",3,1000 ;敵人
setwindow 200,227,23,17,24,24,0,2,80,1,1,":a;frame2.jpg",178,212
lsp 1,"我方頭像.jpg",0,482 ;用lsp來放置我方頭像、血條等等
lsp 2,"我方血條.jpg",120,558
lsp 3,"敵方血條.jpg",0,0

print 1


mov %10,2000;敵人的血值
mov %11,200 ;敵人的攻擊力
mov %12,40 ;敵人的防禦力
mov %13,2000 ;我方的血值
mov %14,500 ;我方的攻擊力
mov %15,40 ;我方的防禦力
mov %16,10 ;我方藥品數量
bar 1,%10,4,4,662,32,%10,#ff4444;敵人血條
bar 2,%13,125,562,662,38,%13,#ff4444;我方血條

print 10,500
*war

目前敵方血值%10
我方血值%13

select "攻擊",*mattack,"物品",*things
;bar 99,%100,40,300,100,30,%100,#ff4444
;bar 99,150-%1,40,300,100,30,%100,#ff4444;
*mattack
我方攻擊!!
quake 3,1000
rnd2 %1,3,5 ;設 %1為傷害值,數值3-5之間
sub %10,%14
sub %10,%1

bar 1,%10,4,4,662,32,2000,#ff4444
print 7,500
敵人的血值%10
if %10<=0 goto*ydie
if %10>0 goto*yattack
end
*yattack
敵人攻擊!!
quake 3,1000
rnd2 %1,3,5;設 %1為傷害值,數值3-5之間
sub %13,%11
sub %13,%1
bar 2,%13-%11-%1,125,562,662,38,2000,#ff4444
print 7,500
我方血值%13

if %13<=0 goto*mdie
if %13>0 goto*war
end
*ydie
你贏了!!
end
*mdie
你輸了!!
end
*things

你現在有%16顆藥
select "使用",*open,"不使用",*war
*open
sub %2,1
if %13==2000 goto*nouse
if %13>=1800 goto*initial
if %13<1800 goto*add
end
*nouse
你的血值現在是2000
sub %16,1
mov %13,2000
goto*yattack
end
*initial
sub %16,1
你的血值現在是2000
mov %13,2000
goto*yattack
end
*add
sub %16,1
add %13,200
你的血值現在是%13
goto*yattack
end


這是上次的程式

中間有一段:
*open
sub %2,1
if %13==2000 goto*nouse
if %13>=1800 goto*initial
if %13<1800 goto*add
end
*nouse
你的血值現在是2000
sub %16,1
mov %13,2000
goto*yattack
end
*initial
sub %16,1
你的血值現在是2000
mov %13,2000
goto*yattack
end
*add
sub %16,1
add %13,200
你的血值現在是%13
goto*yattack
當初是怕血值超過2000
但現在我發現了一個指令可以大幅縮水這一段
intlimit 編號,最小值,最大值
可以限制一個值最大最小在哪裡
必須要放在define區
於是我把我方及敵人的血值寫成:
intlimit 10,0,2000
intlimit 13,0,2000

接下來簡化
sub %13,%11
sub %13,%1
我測試過
寫成
sub %13,%11+%1
也是可以的


還有這一段
;bar 99,%100,40,300,100,30,%100,#ff4444
;bar 99,150-%1,40,300,100,30,%100,#ff4444;

當初只是測試而忘了刪掉= =

最後說一個我當初寫錯的地方

之前bar上面我寫%10-%1-%14
這樣雖然真正血值不會被沒問題
但血條表示會有問題,表示出來的血條長度是%10-%14-%1-%14-%1
把我方攻擊改500就知道出錯了
應該是四次才把血值清完
但這樣寫兩三次就清完了

and我要說
上次有個指令沒講清楚
rnd
rnd有兩種
一種是rnd2另一種是rnd
rnd的用法是
rnd %1,19
即%1隨機為0~19

rnd2的用法是
rnd2 %1,1,10

即%1隨機為1~10



在經過修改之後
目前的程式碼應該是:
;mode800
*define
intlimit 10,0,2000
intlimit 13,0,2000
game
*start
bg":c;Germany_1006.jpg",13,1000;背景
ld c,":a;敵人.jpg",3,1000 ;敵人
setwindow 200,227,23,17,24,24,0,2,80,1,1,":a;frame2.jpg",178,212
lsp 1,"我方頭像.jpg",0,482 ;用lsp來放置我方頭像、血條等等
lsp 2,"我方血條.jpg",120,558
lsp 3,"敵方血條.jpg",0,0

print 1


mov %10,2000;敵人的血值
mov %11,200 ;敵人的攻擊力
mov %12,40 ;敵人的防禦力
mov %13,2000 ;我方的血值
mov %14,20 ;我方的攻擊力
mov %15,40 ;我方的防禦力
mov %16,10 ;我方藥品數量
bar 1,%10,4,4,662,32,2000,#ff4444;敵人血條
bar 2,%13,125,562,662,38,2000,#ff4444;我方血條

print 10,500
*war

目前敵方血值%10
我方血值%13

select "攻擊",*mattack,"物品",*things
*mattack
我方攻擊!!
quake 3,1000
rnd2 %1,3,5 ;設 %1為傷害值,數值3-5之間
sub %10,%14+%1
bar 1,%10,4,4,662,32,2000,#ff4444 ;敵人血條減少
print 7,500
敵人的血值%10
if %10<=0 goto*ydie
if %10>0 goto*yattack
end
*yattack
敵人攻擊!!
quake 3,1000
rnd2 %1,3,5;設 %1為傷害值,數值3-5之間
sub %13,%11+%1

bar 2,%13,125,562,662,38,2000,#ff4444
print 7,500
我方血值%13

if %13<=0 goto*mdie
if %13>0 goto*war
end
*ydie
你贏了!!
end
*mdie
你輸了!!
end
*things

你現在有%16顆藥
select "使用",*open,"不使用",*war
*open
sub %16,1
add %13,200
你的血值現在是%13
goto*yattack
end
(本文章編集未完)

有些地方還沒改好
= =

我先去唸書
明天代再來改


預計明天會發出另一篇教學文
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=810376
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★serflygod 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:戰鬥進階篇-用ns作出戰... 後一篇:將戰鬥事件公式化...

追蹤私訊切換新版閱覽

作品資料夾

kktwtwyufoo巴友們
歡迎大家來觀賞"魔法世界的記事"的奇幻小說看更多我要大聲說昨天22:41


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】