|
发表于 2009-7-15 12:21:19
|
显示全部楼层
原帖由 kidrock 于 2009-7-14 22:07 发表 
. E- q- X, p5 A主要我是个初学者,最多会修改数字,关于无敌状态这种根本不会,现学的话。。。 。。。我是恐龙,进化不了那种,哎
! Q. }% R6 f; N; Y$ w" F/ P- c
' [ w; E5 ~- w. ]1 X1 }其實修改無敵很容易,5 t1 f- e% q; e9 [
就以遊戲程式設計的觀點來說,' F( n& l: B/ k3 D6 T5 I
一開始我會將人物無敵數值設定為0
/ J: b0 O4 B- Q2 W" Lex: " p) V0 i# Z, E) O8 S7 ^0 Z) |$ A
#define InvisibleInit 0, v! _0 c/ S& w1 V+ r2 T: S( M
+ r( L3 v3 z' S" ~, l
然後當觸發特定事件,例如受到敵方攻擊(物件碰撞),% G1 h3 c7 K* W$ U
呼叫設定函數
3 ]! j/ W/ J. t5 Nex:3 y& t- }$ ] C8 d
BYTE InviIniVal(EVENT event,BYTE SetVal)* o) p* h6 p5 W/ L. p: o
{
/ _" K. G6 u; @2 u4 z//Deal event ...
/ [6 `" t7 a7 T' l9 q3 {. C* [2 l
' }# P6 Z2 V" ~' r//Deal InitVal1 i) \0 i3 p" O, T5 h! i
BYTE ret = 0;, m7 S5 `* |. x9 M5 r+ {
SetVal+=InvisibleInit;
5 O7 i5 k2 J- G' w- V2 `$ iret += SetVal ;& f- V$ n; i8 K
return ret;
% h3 s6 X# E! w6 r1 b1 ~. y}
- A) ^* ?$ d- o$ @
( c7 g* B0 S- |2 q' f& L最後關切的函數當然是遞減函數:/ M8 v e3 B/ b: x9 h
ex:
6 c3 L M! Y, _8 Z6 e! o. mBYTE DecInviVal(BYTE *InviVal)
( q6 @3 B a2 O* N Y{
/ N. E3 D2 W# w$ l7 N4 {cout<<*InviVal<<endl;4 n5 o) ]# @5 \& w0 p: P) a7 Y2 p) n
(*InviVal)--; //*InviVal -= DecVal;9 q$ V8 |8 j: v- ?4 G8 c" u' v
cout<<*InviVal<<endl;
; g- J$ E! H) i(*InviVal > 0) ? DecInviVal(InviVal) : *InviVal=0 ;
2 m% A( i6 D* x5 E9 X' l' rreturn *InviVal;
6 O) G2 t/ F+ I/ o" z; z}' @) Z: S. [1 R$ G
+ j/ H, n1 L. C' K9 F& A針對以上觀念,改遊戲就很簡單,5 K; s# H, j5 Y0 X% {
一開始我們先初始化數值,輸入'?',
3 {; J' f( R" f$ d9 p$ _接著開始無敵時,輸入'+',
( U7 j# d. w4 j6 R9 Q接著我們知道無敵時間會開始變動,
8 e& k2 s B) _" B" C. g% n9 e以上例來說時間開始減少,每隔一段時間輸入'-',
' k9 D8 c" m) v6 A7 q最後沒有無敵效果了,輸入'!' 或是 '0'。
" O6 j. }+ g. t i. n
. Y" T) p7 M0 _8 {8 E記憶體地址經由演算法篩選後,只會剩下幾個,
$ o! u4 A$ p9 Y# {5 H" |7 {( z. Vtry 一下,你要的地址就出現了。8 [& m, n$ z$ Z# j. i/ v( k x
9 N( v: C3 @1 C
P.S.以上程式已經Run過,沒有問題。
0 F: z5 l2 V1 N) D* j" S& k: T V, x9 m0 q% S
[ 本帖最后由 krizal 于 2009-7-15 12:43 编辑 ] |
|