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

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


<< ひし形模様 | main | メッセージ点滅 >>



じゃんけんゲーム

じゃんけんゲームです。

7種類の手で勝敗を決める特殊なじゃんけんです

勝敗表は以下の画像のようになります

 

 

#include "user32.as"
#const handmax 7
#module
;枠線描写
#deffunc boxline int _x1, int _y1, int _x2, int _y2
    line _x1+(_x2<_x1)-(_x2>_x1),_y1,_x2,_y1
    line _x1,_y2,_x2,_y2
    line _x1,_y1,_x1,_y2
    line _x2,_y1,_x2,_y2
    return
;文字を中央に配置
#deffunc align str string, local cx, local cy
    cx=ginfo_cx:cy=ginfo_cy:tcx=cx:tcy=cy
    pos 0,ginfo_dispy:mes string
    cx-=ginfo_mesx/2
    cy-=ginfo_mesy/2
    pos cx,cy:mes string
    pos tcx,tcy+ginfo_mesy
    return
#global

randomize
sdim handname,handmax
handname(0)="Rock"
handname(1)="Fire"
handname(2)="Scissors"
handname(3)="Sponge"
handname(4)="Paper"
handname(5)="Air"
handname(6)="Water"
dim handobjid,handmax

font msgothic,16
pos 500,50
objsize 100,50
objmode 2
repeat handmax
    button gosub handname(cnt),*syoubu
    handobjid(cnt)=stat
loop
pos 270,230
button gosub "再挑戦!",*saido:hobjsaido=objinfo(stat,2)
ShowWindow hobjsaido, 0
syoubuflg=0
gosub *draw
stop
*draw
    redraw 0
    color:boxf
    pos 50,20:mes"Opponent"
    pos 500,20:mes"Player"
    x=50:y=50
    repeat handmax
        color 255,255,255
        boxline x,y,x+100,y+50
        pos x+50,y+25
        align handname(cnt)
        y+50
    loop
    if syoubuflg=0{
        font msgothic,38
        pos 320,240:align "ジャーンケーン…"
        font msgothic,16
    }else:if syoubuflg=1{
        ox=50
        oy=50*opponent+50
        px=500
        py=50*player+50
        boxf ox,oy,ox+100,oy+50
        color
        pos ox+50,oy+25
        align handname(opponent)
        color 255,255,255
        line ox+100,oy+25,px,py+25
        font msgothic,38
        pos 320,180
        winflg=0
        if judge=0{
            align "DRAW"
        }else:if judge<=handmax/2{
            winflg=0
            align "LOSE…"
        }else:if judge>handmax/2{
            winflg=1
            align "WINNER!"
        }
        font msgothic,16
        if judge!=0{
            sid=opponent
            eid=player
            sdim h1,512
            repeat
                h1+=handname(sid)
                if sid=eid{
                    break
                }else{
                    if winflg{
                        h1+=" < "
                        sid--
                        if sid<0{sid+=handmax}
                    }else{
                        h1+=" > "
                        sid++
                        if sid>=handmax{sid-=handmax}
                    }
                }
            loop
            pos 320,420
            align h1
        }
    }
    redraw
    return
*syoubu
    player=stat
    opponent=rnd(handmax)
    ;じゃんけんの勝敗判定
    judge=(player-opponent+handmax)¥handmax
    syoubuflg=1
    repeat handmax
        objenable handobjid(cnt),0
    loop
    ShowWindow hobjsaido, 5
    gosub *draw
    return
*saido
    syoubuflg=0
    repeat handmax
        objenable handobjid(cnt),1
    loop
    ShowWindow hobjsaido, 0
    gosub *draw
    return

0
    posted by higashijugem 07:57comments(0)|-|


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