hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
ASTEROID - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

無指向性シューティング

スクリプト

HSP3.0

fileasteroids.hsp
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
|
!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
!
 
-
|
|
!
 
-
|
|
|
|
|
|
|
!
 
-
|
|
|
|
!
 
 
 
 
 
 
//------------------------------------------------
ASTEROIDS BASE
自機の移動
弾の発射
//------------------------------------------------
 
#define RADS        0.017453    //1度毎秒 = π/180ラジアン毎秒
#define ROTATE_STEP    0.7            //回転の速さ
#define SPEED        0.0002        //基本スピード
#define xMAX        510.0        //スクリーンの幅
#define yMAX        330.0        //          の高さ
#define ROOM        30.0        //スクリーンの余裕
 
//------------------------------------------------
    screen 0,xMAX,yMAX
    cls 4
 
*Main
    gosub *Init
    repeat
        redraw 0
        gosub *Cleanup
        gosub *SpaceShip
        redraw 1
        await
        gosub *Control
    loop
 
//初期化
*Init
    count = 8
    rotation = 0.0
    //0-4 : Ship  5-7 : boost
    Shape_x = 0.0, -7.0, 7.0, -5.0, 5.0, -3.0, 0.0, 3.0
    Shape_y = -14.0, 7.0, 7.0, 2.0, 2.0, 2.0, 10.0, 2.0
    //実際のスクリーン座標
    Screen_x = Shape_x
    Screen_y = Shape_y
    ddim Fire_x, 50
    ddim Fire_y, 50
    ddim F_Rads, 50 
    Radians = 0.0
    Loc_x = 100.0
    Loc_y = 100.0
    //今の力の向き
    Direction_x = 0.0
    Direction_y = 0.0
    speed_c = 1.0
    //摩擦
    friction = 0.998
    return
 
*SpaceShip
    gosub *Translate
    gosub *Draw
    gosub *Move
    gosub *Shot
    gosub *Compute
    return
//座標変換
*Translate
    i = 0
    while i < count
        
        Screen_x(i) = Shape_x(i) * cos(Radians) - Shape_y(i) * sin(Radians)
        Screen_y(i) = Shape_y(i) * cos(Radians) + Shape_x(i) * sin(Radians)
 
        Screen_x(i) += Loc_x
        Screen_y(i) += Loc_y
        i++
    wend
    return
//描画
*Draw
    //Object描画
    color 255,255,255
    
    //SpaceShip
    line Screen_x( 1 ) , Screen_y( 1 ) , Screen_x( 0 ) , Screen_y( 0 )
    line Screen_x( 2 ) , Screen_y( 2 ) , Screen_x( 0 ) , Screen_y( 0 )
    line Screen_x( 3 ) , Screen_y( 3 ) , Screen_x( 4 ) , Screen_y( 4 )
    
    //Boost
    if (boost < 0) {
        line Screen_x( 5 ) , Screen_y( 5 ) , Screen_x( 6 ) , Screen_y( 6 )
        line Screen_x( 7 ) , Screen_y( 7 ) , Screen_x( 6 ) , Screen_y( 6 )
        boost = 0
    }//関連 --- UP key を押した時
    return
//移動
*Move
    //慣性
    Direction_x *= friction
    Direction_y *= friction
    //移動
    Loc_x += Direction_x
    Loc_y += Direction_y
 
    //端まで行ったら戻る
    if Loc_x < 0.0  - ROOM : Loc_x += xMAX + ROOM
    if Loc_x > xMAX + ROOM : Loc_x -= xMAX + ROOM
    if Loc_y < 0.0  - ROOM : Loc_y += yMAX + ROOM
    if Loc_y > yMAX + ROOM : Loc_y -= yMAX + ROOM
 
    return
*Shot
    
    i = 0
    while i < 50
         
    //ShotMove
        Fire_x(i) += sin( F_rads(i) )
        Fire_y(i) -= cos( F_rads(i) )
    //ShotDraw
        pset Fire_x(i) , Fire_y(i)
    i++
    wend
    return
//計算
*Compute
    //回転角度
    Radians = rotation * RADS
    //慣性スイッチ
    switch j
    case 0
        speed_c = 1.0
        friction = 0.998
        swbreak
    case 200
        speed_c = 3.0
        friction = 0.999
        swbreak
    case 950
        speed_c = 5.0
        friction = 0.999
        swbreak
    case 970
        speed_c = 10.0
        friction = 0.9999
        swbreak
    case 1000
        speed_c = 10.0
        friction = 0.998
        swbreak
    swend
    if j > 1000 : j = 1000
    if j < 0    : j = 0
    //END 慣性スイッチ
    return
    
//キー入力
*Control
    stick key,1+2+4
 
    //left
    if key&1 {
        rotation -= ROTATE_STEP
        if rotation < 0.0 : rotation = 360.0 - ROTATE_STEP
    }
    //right
    if key&4 {
        rotation += ROTATE_STEP
        if rotation > 359.0 : rotation = 0.0 + ROTATE_STEP
    }
    //up
    if key&2 {
        //Direction(方向)にRadians方向への力を
        Direction_x += sin( Radians ) * SPEED * speed_c
        Direction_y -= cos( Radians ) * SPEED * speed_c
        //
        j++
        //boost  ;;ちらつかせるための時間差 0 -> 1 -> -1 -> 0
        if boost == 0 : boost = 1 :else : boost *= -1
    }else : j--
    //down
    if key&16 {
        Fire_x(fire_stock) = Screen_x(0)
        Fire_y(fire_stock) = Screen_y(0)
        F_rads(fire_stock) = Radians
        if fire_stock == 50 :fire_stock = 0 : else : fire_stock++
    }
    return
    
*Cleanup
    color 0,0,0
    boxf
    return

コメント

  • 一番上コメントアウトしてなかった。・゚・(ノД`) -- Charlotte 2005-12-30 (金) 05:00:26
  • 早起きした様子でCharlotteさん^^; -- kz3 2005-12-30 (金) 07:47:28
  • シューティングより自由に動けるシューティングですね。こういうのなんて分類になるんでしょう?やっぱりシューティングでいいのかな。 -- GENKI? 2005-12-30 (金) 11:00:39
  • え〜、参考ページはThe WebSEです。
    レトロゲーってのです。 -- Charlotte 2005-12-30 (金) 11:51:01
  • やってきました…むずかしいですね。 -- GENKI? 2005-12-30 (金) 16:20:50

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル:
fileasteroids.hsp
655件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:26:51 (2436d)