トップページgamedev
990コメント416KB

ズブの初心者がゲーム作れるまで勉強するスレ

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/11/07 20:26ID:PFtlmWD9
【参加資格】
ズブの初心者以外お断りです。

なおアドバイス等はプロのかたでも結構です。
初心者は聞く耳を持ちプロもわかりやすく教えてやってください。
0887名前は開発中のものです。2006/03/22(水) 08:54:51ID:4wbvXuWa
#define MAX 50 //敵の数最大
#define    cspeed    8 //自機移動速度
#define EBULLET_MAX    50 //敵弾数最大

//初期化
gosub *Boot_Initialize
gosub *Play_Initialize

*Start
repeat
    //裏画面を作る
    gsel 2,-1
    cls 4
    await 1

    //自機
    stick keyboard,15,1

    if keyboard & 1 {
        cx=cx-cspeed
        if cx<0 : cx=0
    }
    if keyboard & 4 {
        cx=cx+cspeed
        if cx>639-32 : cx=639-32
    }
    if keyboard & 64 {
        if benable=0 {
            benable=1
            bx=cx+16
0888名前は開発中のものです。2006/03/22(水) 08:55:38ID:4wbvXuWa
            by=cy
        }
    }
    pos cx,cy: gcopy 3, 0,0

    //自機弾
    if benable=1 {
        by=by-8
        if by<0 : benable=0
        color 255,255,255
        line bx, by, bx, by-16
    }

    //敵機
    ndir=dir
    repeat MAX
        if tl.cnt.0 = 1 {
            pos tl.cnt.2,tl.cnt.3:gcopy 4, 0,0,32,32
            tl.cnt.2 = tl.cnt.2+dir
            if (tl.cnt.2 <= 0) : ndir=1
            if (tl.cnt.2 >= 602) : ndir=-1
0889名前は開発中のものです。2006/03/22(水) 08:56:09ID:4wbvXuWa
            //あたり判定
            if benable and tl.cnt.2<bx and tl.cnt.2+32>bx and tl.cnt.3<by and tl.cnt.3+32>by {
                tl.cnt.0 = 0
                Score = Score + 10
                Teki_Rest = Teki_Rest - 1

                gosub *Enemy_Fire
            }

            //敵が接地したか
            if tl.cnt.3 > 448 : invasion = 1
        }
    loop
    if dir!ndir {
        repeat MAX
            tl.cnt.3=tl.cnt.3+4
        loop
    }
    dir=ndir
0890名前は開発中のものです。2006/03/22(水) 10:49:46ID:4wbvXuWa
    //敵弾
    repeat EBULLET_MAX
        color 255,255,255
        if bl.cnt.0 = 1 {
            line bl.cnt.2, bl.cnt.3, bl.cnt.2, bl.cnt.3 + 16 //描画
            bl.cnt.3 = bl.cnt.3 + 8 //移動
            if bl.cnt.3 > 480 : bl.cnt.0 = 0 //画面外なら使用終了
            if bl.cnt.2 > cx and bl.cnt.2 < cx + 32 and bl.cnt.3 > cy and bl.cnt.3 < cy+32 : Dead = 1 //自機との当たり判定
        }
    loop

    Color 255, 255, 255
    pos 200,0 : mes "Score : " + Score

    if Score > HighScore : HighScore = Score
    pos 0,0 : mes "High-Score : " + HighScore

    //表画面へコピー
    gsel 0,1
    pos 0,0: gcopy 2,0,0,640,480

    if Teki_Rest=0 : gosub *Stage_Initialize
    if invasion=1 or Dead = 1 : gosub *Play_Initialize
loop
0891名前は開発中のものです。2006/03/22(水) 13:19:37ID:DEs7Ykun
HSPって変数定義とかいらないの?
Cの半分くらいの時間でソース書けるんだが
短すぎて書いた気がしない
0892名前は開発中のものです。2006/03/22(水) 16:53:56ID:4wbvXuWa
//ステージ初期化
*Stage_Initialize
    Stage_Num = Stage_Num + 1
    Dim tl, MAX, 3    //敵
    Dim bl, EBULLET_MAX, 3 //敵の弾
    
    repeat MAX
        tl.cnt.0 = 1    //利用中(0=否)
        tl.cnt.1 = 0    //呼び出すサブルーチン(未使用)
        tl.cnt.2 = ( cnt * 64 ) \ 640    //X座標
        tl.cnt.3 = ( cnt * 64 ) / 640 * 64    //Y座標
    loop
    cx=320
    cy=440

    benable=0
    
    Teki_Rest=MAX
    invasion = 0
    Dead = 0

    cls 4
    Color 255, 255, 255
    pos 280,240 : mes "Stage " + Stage_Num
    AWait 1000
return
0893名前は開発中のものです。2006/03/22(水) 16:54:27ID:4wbvXuWa
//プレイ初期化
*Play_Initialize
    Stage_Num=0
    Score=0
    gosub *Stage_Initialize
return

//起動時の初期化
*Boot_Initialize
    HighScore=74
    Score=0
    
    //裏画面
    buffer 2,640,480
    
    //自機
    buffer 3,32,32
    picload "jiki.bmp"
    
    //敵機
    buffer 4,32,32
    picload "teki.bmp"
    
    screen 0,640,480
    
    cls 4
return
0894名前は開発中のものです。2006/03/22(水) 16:54:57ID:4wbvXuWa
//敵が弾を発射
*Enemy_Fire
//    bl.cnt.0 //使用中かどうか
//    bl.cnt.1 //弾道サブルーチン(未使用)
//    bl.cnt.2 //X座標
//    bl.cnt.3 //Y座標

    teki_num=cnt
    
    repeat EBULLET_MAX
        if bl.cnt.0 = 0 {
            bl.cnt.0 = 1
            bl.cnt.2 = tl.teki_num.2+16
            bl.cnt.3 = tl.teki_num.3
            break
        }
    loop
return
■ このスレッドは過去ログ倉庫に格納されています