Lesson05 竜宮城でサカナが泳ぎ回る 解説
001:<HTML>
002:<HEAD>
003:<TITLE>Lesson04</TITLE>
004:<SCRIPT LANGUAGE="VBScript">
005:<!--
006:Dim xhirame1, yhirame1 'ヒラメの速度 x:水平方向 y:垂直方向
007:Dim xkatsuo1, ykatsuo1 'カツオの速度 x:水平方向 y:垂直方向
008:Dim xkatsuo2, ykatsuo2
009:Dim xkatsuo3, ykatsuo3
010:Dim xkatsuo4, ykatsuo4
011:Dim xkatsuo5, ykatsuo5
012:Dim xfugu1, yfugu1 'フグの速度 x:水平方向 y:垂直方向
013:Dim xfugu2, yfugu2
014:Dim xfugu3, yfugu3
015:Dim xtai1, ytai1 'タイの速度 x:水平方向 y:垂直方向
016:Dim xtai2, ytai2
017:Dim xkurineo1, ykurineo1 'クリネオの速度 x:水平方向 y:垂直方向
018:Dim xkurineo2, ykurineo2
019:Dim tkurineo1, tkurineo2
020:Dim xurashima, yurashima 'ウラシマの速度 x:水平方向 y:垂直方向
021:Dim ww, wh 'ww:280行目ウインドウ幅の値代入 wh:281行目ウインドウ高さの値代入
022:xhirame1 = 6: yhirame1 = 1 'ここから変数に初期値代入
023:xkatsuo1 = 8: ykatsuo1 = 1
024:xkatsuo2 = 8: ykatsuo2 = 1
025:xkatsuo3 = 8: ykatsuo3 = 1
026:xkatsuo4 = 8: ykatsuo4 = 1
027:xkatsuo5 = 8: ykatsuo5 = 1
028:xfugu1 = 6: yfugu1 = 2
029:xfugu2 = 6: yfugu2 = 2
030:xfugu3 = 6: yfugu3 = 2
021:xtai1 = 8: ytai1 = -2
032:xtai2 = 8: ytai2 = -2
033:xkurineo1 = 1: ykurineo1 = 4
034:xkurineo2 = 1: ykurineo2 = 4
035:xurashima = 4: yurashima = 1
036:Sub Window_OnLoad() 'Lesson01解説 Window Onload 参照
037: otohime.Style.Filter = "Fliph" '始めに右向きの乙姫を左に向かわせる リファレンス Filter 参照
038: tm() 'この行は Call tm() の省略形 279行目のサブプロシジャー tm を呼び出す。
039:End Sub
040:Sub turnotohime() '乙姫を振り向かせる 282行目からCall
041: If xurashima > 0 Then '乙姫の下をウラシマが右に行くとき乙姫の向きが右向きに戻る
042: If urashima.Style.PixelLeft + urashima.Width * 0.25 > otohime.Style.PixelLeft Then
043: If otohime.Style.Filter <> "" Then otohime.Style.Filter = "" End If
044: End If
045: Else '乙姫の下をウラシマが左に行くとき乙姫の向きが左向きに反転する
046: If urashima.Style.PixelLeft + urashima.Width * 0.75 < otohime.Style.PixelLeft + otohime.Width Then
047: If otohime.Style.Filter = "" Then otohime.Style.Filter = "Fliph" End If
048: End If
049: End If
050:End Sub
051:Sub swimurashima() '亀に乗ってウラシマが海中を動きまわる 283行目からCall
052: If urashima.Style.PixelLeft > ww - urashima.Width * 1.2 Then '画面右端で左向きに反転する
053: xurashima = -4
054: urashima.Style.Filter = "Fliph"
055: ElseIf urashima.Style.PixelLeft < 0 Then '画面左端で右向きに反転する
056: xurashima = 4
057: urashima.Style.Filter = ""
058: End If
059: If urashima.Style.PixelTop > wh - urashima.Height * 1.2 Then '画面下端で上向に反転する
060: yurashima = -1
061: ElseIf urashima.Style.PixelTop < wh * 0.3 Then '画面上方で下向に反転する
062: yurashima = 1
063: End If
064: urashima.Style.PixelLeft = urashima.Style.PixelLeft + xurashima '亀に乗った浦島を水平方向に動かす
065: urashima.Style.PixelTop = urashima.Style.PixelTop + yurashima '亀に乗った浦島を垂直方向に動かす
066:End Sub
067:Sub swimhirame() 'ヒラメが海中を泳ぐ 284行目からCall
068: If hirame1.Style.PixelLeft > ww - hirame1.Width * 1.2 Then
069: xhirame1 = -6
070: hirame1.Style.Filter = "Fliph"
071: ElseIf hirame1.Style.PixelLeft < 0 Then
072: xhirame1 = 6
073: hirame1.Style.Filter = ""
074: End If
075: If hirame1.Style.PixelTop > wh - hirame1.Height * 1.2 Then
076: yhirame1 = -1
077: ElseIf hirame1.Style.PixelTop < wh / 2 Then
078: yhirame1 = 1
079: End If
080: hirame1.Style.PixelLeft = hirame1.Style.PixelLeft + xhirame1
081: hirame1.Style.PixelTop = hirame1.Style.PixelTop + yhirame1
082:End Sub
083:Sub swimkatsuo() 'カツオの群が泳ぐ 285行目からCall
084: If katsuo1.Style.PixelLeft > ww - katsuo1.Width * 1.5 Then '1匹目のカツオ
085: xkatsuo1 = -8
086: katsuo1.Style.Filter = "Fliph"
087: ElseIf katsuo1.Style.PixelLeft < 0 Then
088: xkatsuo1 = 8
089: katsuo1.Style.Filter = ""
090: End If
091: If katsuo1.Style.PixelTop > wh - katsuo1.Height * 2 Then
092: ykatsuo1 = -1
093: ElseIf katsuo1.Style.PixelTop < 100 Then
094: ykatsuo1 = 1
095: End If
096: katsuo1.Style.PixelLeft = katsuo1.Style.PixelLeft + xkatsuo1
097: katsuo1.Style.PixelTop = katsuo1.Style.PixelTop + ykatsuo1
098: If katsuo2.Style.PixelLeft > ww - katsuo2.Width * 1.5 Then '2匹目のカツオ
099: xkatsuo2 = -8
100: katsuo2.Style.Filter = "Fliph"
101: ElseIf katsuo2.Style.PixelLeft < 0 Then
102: xkatsuo2 = 8
103: katsuo2.Style.Filter = ""
104: End If
105: If katsuo2.Style.PixelTop > wh - katsuo2.Height * 2 Then
106: ykatsuo2 = -1
107: ElseIf katsuo2.Style.PixelTop < 100 Then
108: ykatsuo2 = 1
109: End If
110: katsuo2.Style.PixelLeft = katsuo2.Style.PixelLeft + xkatsuo2
111: katsuo2.Style.PixelTop = katsuo2.Style.PixelTop + ykatsuo2
112: If katsuo3.Style.PixelLeft > ww - katsuo3.Width * 1.5 Then '3匹目のカツオ
113: xkatsuo3 = -8
114: katsuo3.Style.Filter = "Fliph"
115: ElseIf katsuo3.Style.PixelLeft < 0 Then
116: xkatsuo3 = 8
117: katsuo3.Style.Filter = ""
118: End If
119: If katsuo3.Style.PixelTop > wh - katsuo3.Height * 2 Then
120: ykatsuo3 = -1
121: ElseIf katsuo3.Style.PixelTop < 100 Then
122: ykatsuo3 = 1
123: End If
124: katsuo3.Style.PixelLeft = katsuo3.Style.PixelLeft + xkatsuo3
125: katsuo3.Style.PixelTop = katsuo3.Style.PixelTop + ykatsuo3
126: If katsuo4.Style.PixelLeft > ww - katsuo4.Width * 1.5 Then '4匹目のカツオ
127: xkatsuo4 = -8
128: katsuo4.Style.Filter = "Fliph"
129: ElseIf katsuo4.Style.PixelLeft < 0 Then
130: xkatsuo4 = 8
131: katsuo4.Style.Filter = ""
132: End If
133: If katsuo4.Style.PixelTop > wh - katsuo4.Height * 2 Then
134: ykatsuo4 = -1
135: ElseIf katsuo4.Style.PixelTop < 100 Then
136: ykatsuo4 = 1
137: End If
138: katsuo4.Style.PixelLeft = katsuo4.Style.PixelLeft + xkatsuo4
139: katsuo4.Style.PixelTop = katsuo4.Style.PixelTop + ykatsuo4
140: If katsuo5.Style.PixelLeft > ww - katsuo5.Width * 1.5 Then '5匹目のカツオ
141: xkatsuo5 = -8
142: katsuo5.Style.Filter = "Fliph"
143: ElseIf katsuo5.Style.PixelLeft < 0 Then
144: xkatsuo5 = 8
145: katsuo5.Style.Filter = ""
146: End If
147: If katsuo5.Style.PixelTop > wh - katsuo5.Height * 2 Then
148: ykatsuo5 = -1
149: ElseIf katsuo5.Style.PixelTop < 100 Then
150: ykatsuo5 = 1
151: End If
152: katsuo5.Style.PixelLeft = katsuo5.Style.PixelLeft + xkatsuo5
153: katsuo5.Style.PixelTop = katsuo5.Style.PixelTop + ykatsuo5
154:End Sub
155:Sub swimfugu() 'フグの群が泳ぐ 286行目からCall
156: If fugu1.Style.PixelLeft > ww - fugu1.Width * 1.5 Then '1匹目のフグ
157: xfugu1 = -6
158: fugu1.Style.Filter = "Fliph"
159: ElseIf fugu1.Style.PixelLeft < 0 Then
160: xfugu1 = 6
161: fugu1.Style.Filter = ""
162: End If
163: If fugu1.Style.PixelTop > wh - fugu1.Height * 1.2 Then
164: yfugu1 = -2
165: ElseIf fugu1.Style.PixelTop < 100 Then
166: yfugu1 = 2
167: End If
168: fugu1.Style.PixelLeft = fugu1.Style.PixelLeft + xfugu1
169: fugu1.Style.PixelTop = fugu1.Style.PixelTop + yfugu1
170: If fugu2.Style.PixelLeft > ww - fugu2.Width * 1.5 Then '2匹目のフグ
171: xfugu2 = -6
172: fugu2.Style.Filter = "Fliph"
173: ElseIf fugu2.Style.PixelLeft < 0 Then
174: xfugu2 = 6
175: fugu2.Style.Filter = ""
176: End If
177: If fugu2.Style.PixelTop > wh - fugu2.Height * 1.2 Then
178: yfugu2 = -2
179: ElseIf fugu2.Style.PixelTop < 100 Then
180: yfugu2 = 2
181: End If
182: fugu2.Style.PixelLeft = fugu2.Style.PixelLeft + xfugu2
183: fugu2.Style.PixelTop = fugu2.Style.PixelTop + yfugu2
184: If fugu3.Style.PixelLeft > ww - fugu3.Width * 1.5 Then '3匹目のフグ
185: xfugu3 = -6
186: fugu3.Style.Filter = "Fliph"
187: ElseIf fugu3.Style.PixelLeft < 0 Then
188: xfugu3 = 6
189: fugu3.Style.Filter = ""
190: End If
191: If fugu3.Style.PixelTop > wh - fugu3.Height * 1.2 Then
192: yfugu3 = -2
193: ElseIf fugu3.Style.PixelTop < 100 Then
194: yfugu3 = 2
195: End If
196: fugu3.Style.PixelLeft = fugu3.Style.PixelLeft + xfugu3
197: fugu3.Style.PixelTop = fugu3.Style.PixelTop + yfugu3
198:End Sub
199:Sub swimtai() '2匹のタイが泳ぐ 287行目からCall
200: If tai1.Style.PixelLeft > ww - tai1.Width * 1.5 Then '1匹目のタイ
201: xtai1 = -8
202: tai1.Style.Filter = "Fliph"
203: ElseIf tai1.Style.PixelLeft < 0 Then
204: xtai1 = 8
205: tai1.Style.Filter = ""
206: End If
207: If tai1.Style.PixelTop > wh - tai1.Height * 1.2 Then
208: ytai1 = -2
209: ElseIf tai1.Style.PixelTop < 100 Then
210: ytai1 = 2
211: End If
212: tai1.Style.PixelLeft = tai1.Style.PixelLeft + xtai1
213: tai1.Style.PixelTop = tai1.Style.PixelTop + ytai1
214: If tai2.Style.PixelLeft > ww - tai2.Width * 1.5 Then '2匹目のタイ
215: xtai2 = -8
216: tai2.Style.Filter = "Fliph"
217: ElseIf tai2.Style.PixelLeft < 0 Then
218: xtai2 = 8
219: tai2.Style.Filter = ""
220: End If
221: If tai2.Style.PixelTop > wh - tai2.Height * 1.2 Then
222: ytai2 = -2
223: ElseIf tai2.Style.PixelTop < 100 Then
224: ytai2 = 2
225: End If
226: tai2.Style.PixelLeft = tai2.Style.PixelLeft + xtai2
227: tai2.Style.PixelTop = tai2.Style.PixelTop + ytai2
228:End Sub
229:Sub swimkurineo() '2匹のクリネオが舞う 288行目からCall
230: If kurineo1.Style.PixelLeft > ww - kurineo1.Width * 1.2 Then '1匹目のクリネオ
231: xkurineo1 = -1
232: ElseIf kurineo1.Style.PixelLeft < 0 Then
233: xkurineo1 = 1
234: End If
235: If kurineo1.Style.PixelTop > wh - kurineo1.Height * 1.2 Then
236: ykurineo1 = -4
237: tkurineo1 = 0
238: ElseIf kurineo1.Style.PixelTop < 100 Then
239: ykurineo1 = 4
240: tkurineo1 = 0
241: End If
242: If tkurineo1 < 20 Then
243: kurineo1.Style.PixelLeft = kurineo1.Style.PixelLeft + xkurineo1
244: kurineo1.Style.PixelTop = kurineo1.Style.PixelTop + ykurineo1
245: Else
246: kurineo1.Style.PixelTop = kurineo1.Style.PixelTop - ykurineo1 / 2
247: End If
248: tkurineo1 = (tkurineo1 + 1) Mod 40
249: if tkurineo1 = 20 Then
250: kurineo1.Style.Filter = "Fliph"
251: ElseIf tkurineo1 = 0 Then
252: kurineo1.Style.Filter = ""
253: End If
254: If kurineo2.Style.PixelLeft > ww - kurineo2.Width * 1.2 Then '2匹目のクリネオ
255: xkurineo2 = -1
256: ElseIf kurineo2.Style.PixelLeft < 0 Then
257: xkurineo2 = 1
258: End If
259: If kurineo2.Style.PixelTop > wh - kurineo2.Height * 1.2 Then
260: ykurineo2 = -4
261: tkurineo2 = 0
262: ElseIf kurineo2.Style.PixelTop < 100 Then
263: ykurineo2 = 4
264: tkurineo2 = 0
265: End If
266: If tkurineo2 < 20 Then
267: kurineo2.Style.PixelLeft = kurineo2.Style.PixelLeft + xkurineo2
268: kurineo2.Style.PixelTop = kurineo2.Style.PixelTop + ykurineo2
269: Else
270: kurineo2.Style.PixelTop = kurineo2.Style.PixelTop - ykurineo2 / 2
271: End If
272: tkurineo2 = (tkurineo2 + 1) Mod 40
273: if tkurineo2 = 20 Then
274: kurineo2.Style.Filter = "Fliph"
275: ElseIf tkurineo2 = 0 Then
276: kurineo2.Style.Filter = ""
277: End If
278:End Sub
279:Sub tm() '100msごとに SetTimeOut関数により Call される
280: ww = Document.Body.OffsetWidth '変数 ww にウインドウ幅の値を代入する
281: wh = Document.Body.OffsetHeight '変数 wh にウインドウ高さの値を代入する。
282: turnotohime 'サブプロシジャー turnotohime を Call
283: swimurashima 'サブプロシジャー swimurashima を Call
284: swimhirame 'サブプロシジャー swimhirame を Call
285: swimkatsuo 'サブプロシジャー swimkatsuo を Call
286: swimfugu 'サブプロシジャー swimfugu を Call
287: swimtai 'サブプロシジャー swimtai を Call
288: swimkurineo 'サブプロシジャー swimkurineo を Call
289: SetTimeOut "tm", 100 'Lesson01解説 SetTimeOut 参照
290:End Sub
291:-->
292:</SCRIPT>
293:</HEAD>
294:<BODY BGCOLOR="#0060FF">
295:<IMG SRC="img/otohime.gif" ID="otohime" Style="Position:Absolute;Left:450;Top:10"> '乙姫 画像配置
296:<IMG SRC="img/hirame.gif" ID="hirame1" Style="Position:Absolute;Left:0;Top:500"> 'ヒラメ
297:<IMG SRC="img/katsuo.gif" ID="katsuo1" Style="Position:Absolute;Left:400;Top:400"> 'カツオ
298:<IMG SRC="img/katsuo.gif" ID="katsuo2" Style="Position:Absolute;Left:360;Top:430">
299:<IMG SRC="img/katsuo.gif" ID="katsuo3" Style="Position:Absolute;Left:320;Top:460">
300:<IMG SRC="img/katsuo.gif" ID="katsuo4" Style="Position:Absolute;Left:280;Top:490">
301:<IMG SRC="img/katsuo.gif" ID="katsuo5" Style="Position:Absolute;Left:240;Top:520">
302:<IMG SRC="img/fugu.gif" ID="fugu1" Style="Position:Absolute;Left:300;Top:200"> 'フグ
303:<IMG SRC="img/fugu.gif" ID="fugu2" Style="Position:Absolute;Left:250;Top:280">
304:<IMG SRC="img/fugu.gif" ID="fugu3" Style="Position:Absolute;Left:180;Top:220">
305:<IMG SRC="img/tai.gif" ID="tai1" Style="Position:Absolute;Left:100;Top:100"> 'タイ
306:<IMG SRC="img/tai.gif" ID="tai2" Style="Position:Absolute;Left:220;Top:180">
307:<IMG SRC="img/kurineo.gif" ID="kurineo1" Style="Position:Absolute;Left:100;Top:300"> 'クリネオ
308:<IMG SRC="img/kurineo.gif" ID="kurineo2" Style="Position:Absolute;Left:180;Top:340">
309:<IMG SRC="img/urashima.gif" ID="urashima" Style="Position:Absolute;Left:0;Top:300"> 'ウラシマ
310:<EMBED SRC="urasimam.mid" AUTOSTART="true" LOOP="true" HIDDEN="true"> 'サウンドプレヤー配置
311:<!--Copyright(c) 2002 Animation studio nezus QQQ All rights reserved.-->
312:</BODY>
313:</HTML>
Lesson03 解説 終わり