800020 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

冷静とオタクのあいだ

リスト:LASER Ver2.1

プチコン プログラムリスト

タイトル:LASER Ver2.1
レーザーを撃つことを目的としたものです。

Yボタンでレーザー撃てます。
Bボタンでオプション追加。
Aボタンでオプションが減ります。
Xボタンで終了します。
もちろん十字キー(スライドパッド)で移動できます。

オプションの移動履歴保存処理を改善しています。
(166,167行辺り 無駄なFORループをなくしました)
これだけでも、結構動作が軽くなりました。
BGのテストを兼ねて超適当な星空を実装しました。
また、ショットボタンから手を離してもレーザーは止まりません。(写真が撮りにくいです)
ちなみに、60行の「5」を違う数字に変更するとオプションの色が変わります。
235行の最後の「6」を変更するとレーザーの色が変わります。
まあ、プチコンを買うような人にはこんな説明は必要ないでしょうが...
DSC03024.JPG

http://www43.tok2.com/home/ogut/index.html
リスト作成に上記サイトの「PTC2HTML」を利用させていただいています。

001. ′Ver 2.1
002. ′BGニホシヲヒョウシ゛
003. ′Ver 2.0 7コショリオチナシ
004. ′キ゛シ゛ヒ゛ットシフト
005. ACLS
006. CLEAR
007. VISIBLE 1,1,1,1,1,1
008. CLS:COLOR 0
009. ′GPAGE 0,0,0
010. 
011. OPMAX=20     ′オフ゜ションノカス゛
012. MID0=0       ′シ゛キノスフ゜ライトID0
013. MID1=OPMAX+1 ′シ゛キノスフ゜ライトID1
014. 
015. ′LASERステ-タス シ゛キ+オフ゜ション
016. DIM LST(OPMAX+1,4)
017. FOR I=0 TO OPMAX
018.   LST(I,0)=0  ′フラク゛
019.   LST(I,1)=0  ′ナカ゛サ
020.   LST(I,2)=0  ′カイシX
021.   LST(I,3)=0  ′カイシY
022. NEXT I
023. 
024. ′ク゛ラフィックショキカ
025. GPAGE 0,0,0
026. GPRIO 2
027. 
028. ′スフ゜ライトシ゛ュンヒ゛
029. DIM SPK(100),SPP(100),SPH(100),SPV(100),SPI(100)
030. DIM SPF(100),SPX(100),SPY(100)
031. FOR I=0 TO 99
032.   SPF(I)=0  ′0:スキッフ゜ 1:シンキ 2:イト゛ウ 3:ヘンコウ 4:シュウキョ
033. NEXT I
034. ′シ゛キセッテイ
035. SPK(MID0)=256
036. SPP(MID0)=2
037. SPH(MID0)=0
038. SPV(MID0)=0
039. SPI(MID0)=0
040. SPF(MID0)=1
041. SPX(MID0)=100
042. SPY(MID0)=100
043. SPK(MID1)=257
044. SPP(MID1)=2
045. SPH(MID1)=0
046. SPV(MID1)=0
047. SPI(MID1)=0
048. SPF(MID1)=1
049. SPX(MID1)=116
050. SPY(MID1)=100
051. 
052. SPCNT=MID1  ′スフ゜ライトサイタ゛イスウ
053. 
054. ′オフ゜ション
055. OPW=8    ′オフ゜ションノウエイト
056. DIM OP(OPW*OPMAX,2)  ′オフ゜ショヨウエイトテ-フ゛ル X,Y
057. OPC=0    ′ヒョウシ゛チュウノオフ゜ションスウ
058. FOR I=1 TO OPMAX
059.  SPK(I)=200
060.  SPP(I)=5
061.  SPH(I)=0
062.  SPV(I)=0
063.  SPI(I)=0
064.  SPF(I)=0
065.  SPX(I)=0
066.  SPY(I)=0
067. NEXT I
068. 
069. ′スフ゜ライトサ゛ヒョウ 0:X 1:Y
070. DIM OP$(2)
071. 
072. GOSUB @BGSET
073. GOSUB @BGSCR
074. 
075. GOSUB @SPWRITE
076. 
077. @MLOOP
078. ′ニュウリョク
079. XX=0:YY=0
080. BTN=BUTTON(0)
081. 
082. IF BTN AND  64 GOTO @EXIT  ′Xホ゛タン
083. IF BTN AND 128 THEN SHOT=1 ′Yホ゛タン
084. IF BTN AND   1 THEN YY=-2  ′ウエ
085. IF BTN AND   2 THEN YY=2   ′シタ
086. IF BTN AND   4 THEN XX=-2  ′ヒタ゛リ
087. IF BTN AND   8 THEN XX=2   ′ミキ゛
088. 
089. ′レンソ゛クシテニュウリョクサレナイヨウニフラク゛テ゛セイキ゛ョスル
090. IF BTN AND 16 THEN AB=1 ELSE AB=0 ′Aホ゛タン
091. IF AB==0 THEN AFLG=1
092. IF BTN AND 32 THEN BB=1 ELSE BB=0 ′Bホ゛タン
093. IF BB==0 THEN BFLG=1
094. 
095. IF XX!=0 OR YY!=0 THEN GOSUB @MYMOVE
096. 
097. IF SHOT==0 GOTO @SHOTSKIP
098.  FOR I=0 TO OPC
099.   LST(I,0)=1
100.  NEXT I
101.  SHOT=0
102. @SHOTSKIP
103. 
104. ′オフ゜ション Aホ゛タン=ヘラス Bホ゛タン=フヤス
105. IF AFLG AND AB THEN OPADD=-1
106. IF BFLG AND BB THEN OPADD=1
107. IF OPADD!=0 THEN GOSUB @OPTION
108. 
109. WAIT 1
110. GOSUB @SPWRITE
111. GOSUB @LASER
112. GOSUB @BGSCR
113. 
114. GOTO @MLOOP
115. 
116. 
117. @OPTION
118.  IF OPADD==-1 GOTO @OPTMI
119.   ′オフ゜ションツイカ
120.   BFLG=0
121.   IF OPC==OPMAX GOTO @OPEND
122.    OPC=OPC+1
123.    OPX=SPX(OPC-1)
124.    IF OPC==1 THEN OPX=OPX+4
125.    OPY=SPY(OPC-1)
126.    ′ツイカシタ オフ゜ションノ イチ
127.    OP$(0)=OP$(0)+CHR$(OPX)*OPW
128.    OP$(1)=OP$(1)+CHR$(OPY)*OPW
129.    ′スフ゜ライト
130.    SPX(OPC)=OPX
131.    SPY(OPC)=OPY
132.    SPF(OPC)=1
133.  GOTO @OPEND
134.  @OPTMI
135.   AFLG=0
136.   IF OPC==0 GOTO @OPEND
137.    SPF(OPC)=4
138.    OPC=OPC-1
139.  @OPEND
140.  OPADD=0
141. RETURN
142. 
143. @EXIT
144. ACLS
145. PRINT”シュウリョウ
146. END
147. 
148. @MYMOVE
149. ′シ゛キノイト゛ウ
150. SPX(MID0)=SPX(MID0)+XX
151. IF SPX(MID0)<0 THEN SPX(MID0)=0
152. IF SPX(MID0)>223 THEN SPX(MID0)=223
153. SPY(MID0)=SPY(MID0)+YY
154. IF SPY(MID0)<0 THEN SPY(MID0)=0
155. IF SPY(MID0)>175 THEN SPY(MID0)=175
156. SPF(MID0)=2
157. SPX(MID1)=SPX(MID0)+16
158. SPY(MID1)=SPY(MID0)
159. SPF(MID1)=2
160. ′オフ゜ションイト゛ウ
161. IF OPC==0 GOTO @OPMVSKIP
162.  ′オフ゜ションウエイトテ-フ゛ルヲ1ツスライト゛
163.  OPWORK=OPW*OPC-1
164.  ′サイコ゛1モシ゛キリトル
165.  ′セントウニ シ゛キノイチヲイレル
166.  OP$(0)=CHR$(SPX(MID0)+4)+LEFT$(OP$(0),OPWORK)
167.  OP$(1)=CHR$(SPY(MID0))+LEFT$(OP$(1),OPWORK)
168. 
169.  ′オフ゜ツョンスフ゜ライトニハンエイ
170.  FOR I=1 TO OPC
171.   IF SPF(I)!=0 GOTO @OPHSKIP
172.    SPX(I)=ASC(MID$(OP$(0),I*OPW-1,1))
173.    SPY(I)=ASC(MID$(OP$(1),I*OPW-1,1))
174.    SPF(I)=2
175.   @OPHSKIP
176.  NEXT I
177. @OPMVSKIP
178. RETURN
179. 
180. ′---スフ゜ライトカキカエ
181. @SPWRITE
182. FOR J=0 TO SPCNT
183.  SN=J
184.  ON SPF(J) GOSUB @SKIP,@SPNEW,@SPMOVE,@SPCHANG,@SPDEL
185. NEXT J
186. RETURN
187. 
188. @SKIP  ′ナニモシナイ
189. RETURN
190. 
191. @SPNEW
192. SPSET SN,SPK(SN),SPP(SN),SPH(SN),SPV(SN),SPI(SN)
193. SPF(SN)=0
194. GOSUB @SPMOVE
195. RETURN
196. 
197. @SPMOVE
198. SPOFS SN,SPX(SN),SPY(SN)
199. SPF(SN)=0
200. RETURN
201. 
202. @SPCHANG  ′ミサクセイ
203. SPF(SN)=0
204. RETURN
205. 
206. @SPDEL
207. SPCLR SN
208. SPF(SN)=0
209. RETURN
210. 
211. @LASER
212. FOR K=0 TO OPC
213.  IF LST(K,0)==0 GOTO @LANEXT
214.   ′フルイレ-サ゛-ヲケス
215.   ′ナカ゛サ0ナラフルイレ-サ゛-ハナイ
216.   IF LST(K,1)==0 GOTO @LASK01
217.    LEND=LST(K,2)+LST(K,1)
218.    IF LEND>255 THEN LEND=255
219.    GLINE LST(K,2),LST(K,3),LEND,LST(K,3),0
220.   @LASK01
221.   ′アタラシイレ-サ゛-
222.   ′ナカ゛サカ゛220ヲコケタフ゛ンハ スキマニナル
223.   LST(K,1)=LST(K,1)+15
224.   LST(K,2)=SPX(K)+28  ′(32-4)
225.   IF K!=0 THEN LST(K,2)=LST(K,2)-4
226.   LST(K,3)=SPY(K)+8
227.   IF LST(K,1)>220 THEN LST(K,2)=LST(K,2)+(LST(K,1)-220)
228. 
229.   IF LST(K,2)>255 THEN LST(K,0)=0  ′カ゛メンカ゛イニテ゛タ
230.   IF LST(K,0)==0 THEN LST(K,1)=0
231.   IF LST(K,0)==0 GOTO @LANEXT
232. 
233.   LEND=LST(K,2)+LST(K,1)
234.   IF LEND>255 THEN LEND=255
235.   GLINE LST(K,2),LST(K,3),LEND,LST(K,3),6
236.  @LANEXT
237. NEXT K
238. RETURN
239. 
240. 
241. ′--BGノショリ--
242. @BGSET ′BGニハイケイヲヒ゛ョウカ゛
243. BGPAGE 0
244. FOR I=0 TO 63
245.  FOR J=0 TO 23
246.   BGPUT 1,I,J,928,0,0,0 ′マックラ
247.   ′メント゛ウナノテ゛ランタ゛ムテ゛ホシヲタ゛ス
248.   RN1=RND(16)
249.   RN2=RND(2)
250.   IF RN2==0 THEN HOSHI=859 ELSE HOSHI=891
251.   IF RN1==0 THEN BGPUT 1,I,J,HOSHI,0,0,0
252.  NEXT J
253. NEXT I
254. RETURN
255. 
256. @BGSCR
257. IF BGCHK(1)!=0 GOTO @BGSSK  ′ホカンシ゛ョウタイナラ スキッフ゜
258.   BGOFS 1,0,0
259.   BGOFS 1,511,0,1024
260. @BGSSK
261. RETURN
262. 
263. 

LASER21_1.jpg
LASER21_2.jpg
LASER21_3.jpg


Copyright (c) 1997-2020 Rakuten, Inc. All Rights Reserved.