ゲームを作りたい人のための ソースコード集

私がその日作った短めのソースを簡単な解説とともに載せていきます
ゲーム制作初心者にとって参考になるかもしれないソースが多いです


<< 異なるウィンドウのオブジェクトを同時に動かす | main | 一日ゲームNo.12「ピラミッド」 >>



ビンゴゲーム

ビンゴゲームのプログラムです

左上にあるボタンを押すことで操作を行います

数字を見つけやすいように、左の縦列から0~19、20~39、40~59・・・の範囲の数字を割り当てています

 


randomize
pos 10,40:button gosub "ルーレット",*but0

gosub *gameset    ;ゲーム初期化
gosub *draw        ;描写
stop
*but0    ;ボタンを押したときの処理(2工程)
    turnflg^1
    if turnflg{    ;番号を表示
        id=numlist(nlid):nlid++
        objprm 0,"次へ"
    }else{        ;ボードのチェック
        turn++
        gosub *boardcheck
        objprm 0,"ルーレット"
    }
    gosub *draw
    return
*boardcheck    ;数字が出たらボードのラインをチェック
    bkflg=0    ;該当する番号があればボードに穴を開ける
    repeat 5:j=cnt
        repeat 5:i=cnt
            if board(i,j)=id{
                bdflg(i,j)=1
                bkflg=1:break
            }
        loop
        if bkflg:break
    loop
    flg=0    ;横と縦のラインをチェック
    repeat 5:j=cnt
        count1=0:count2=0
        repeat 5:i=cnt
            if bdflg(i,j)=1{count1++}
            if bdflg(j,i)=1{count2++}
        loop
        if count1=5|count2=5{
            flg=1:break
        }
    loop
    if flg=0{    ;斜めのラインをチェック
        count1=0:count2=0
        repeat 5:i=cnt:j=4-cnt
            if bdflg(i,cnt)=1{count1++}
            if bdflg(j,cnt)=1{count2++}
        loop
        if count1=5|count2=5{
            flg=1
        }
    }
    if flg{        ;ビンゴなら
        gosub *draw
        dialog"BINGO!"
        stop
    }
    return
*gameset
    dim board,5,5
    dim bdflg,5,5
    repeat 5:j=cnt    ;数字が被らないようボードに配置
        dim kekka,20
        repeat 20
            value=rnd(cnt + 1)
            kekka(cnt) = kekka(value)
            kekka(value) = cnt
        loop
        repeat 5
            board(j,cnt)=kekka(cnt)+(j*20)
        loop
    loop
    dim numlist,100        ;順番に取り出す数字の羅列を作る
    repeat 100
        value=rnd(cnt + 1)
        numlist(cnt) = numlist(value)
        numlist(value) = cnt
    loop
    turnflg=0
    nlid=0
    turn=0
    return
*draw
    gmode 2
    title"ターン:"+turn
    color 255,255,255:boxf:color
    if turnflg=0{
        sysfont
        pos 10,10:mes"ボタンを押すと番号が出ます"
    }else{
        font msgothic,40
        pos 300,50:mes""+id
    }
    font msgothic,28
    x=200:y=200
    repeat 5:j=cnt
        repeat 5:i=cnt
            if bdflg(i,j){
                tx=i*40+x+14:ty=j*40+y+14
                circle tx-14,ty-14,tx+14,ty+14
            }else{
                pos i*40+x,j*40+y:mes""+board(i,j)
            }
        loop
    loop
    redraw:await 17:redraw 0
    return

0
    posted by higashijugem 08:47comments(0)|-|


    この記事に対するコメント