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

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





二次元マップのスクロール

マップチップを並べた画面内を移動するアルゴリズムです

キャラクターはマスに捉われない動き方をします

 


csz=32:cszh=csz/2
gmw=640/csz:gmh=480/csz        ;画面に表示されるマス数
mpw=gmw*2:mph=gmh*2        ;マップ全体のマス数
gmwmx=mpw*csz:gmhmx=mph*csz    ;マップ全体の大きさ
dim mpdt,mpw,mph
repeat 600
    mpdt(rnd(mpw-2)+1,rnd(mph-2)+1)=1
loop
;マップチップ
buffer 2,csz*3,csz:celdiv 2,csz,csz,cszh,cszh
boxf:x=0
color 1:boxf x,0,x+csz-1,csz:x+csz
color 255,255,255:boxf x,0,x+csz-1,csz:x+csz
color 255:circle x,0,x+csz-1,csz
gsel 0
gmode 2
plx=cszh:ply=cszh
*main
    color:boxf
    getkey k37,37
    getkey k38,38
    getkey k39,39
    getkey k40,40
    if k37{
        plx-4
    }
    if k38{
        ply-4
    }
    if k39{
        plx+4
    }
    if k40{
        ply+4
    }
    plx=limit(plx,cszh,gmwmx-cszh)
    ply=limit(ply,cszh,gmhmx-cszh)
    ;表示
    gstx=limit(plx-csz*gmw/2,0,csz*mpw-csz*gmw)
    gsty=limit(ply-csz*gmh/2,0,csz*mph-csz*gmh)
    sx=gstx/csz-1:sy=gsty/csz-1
    ix=gstx¥csz:iy=gsty¥csz
    repeat gmh+2:j=cnt
        repeat gmw+2:i=cnt
            tx=sx+i:ty=sy+j
            if 0<=tx&tx<mpw&0<=ty&ty<mph{
                pos (i-1)*csz+cszh-ix,(j-1)*csz+cszh-iy
                celput 2,mpdt(tx,ty)
            }
        loop
    loop
    pos plx-gstx,ply-gsty:celput 2,2
    redraw:await 17:redraw 0
    goto *main

0
    posted by higashijugem 21:37comments(0)|-|





    あみだくじ

    あみだくじ表を自動で作成するプログラムです



    cmx=20    ;横線の数
    rmx=5    ;平行線の数
    randomize
    dim linedt,cmx,rmx
    cnm=0
    repeat
        if cnm>=cmx:break
        x=rnd(cmx):y=rnd(rmx)
        if linedt(x,y)=0{
            setflg=0
            if y=0{
                dir=0
            }else:if y=rmx-1{
                dir=1
            }else{
                dir=rnd(2)
            }
            if dir=0{
                if linedt(x,y+1)=0{
                    linedt(x,y)=1
                    linedt(x,y+1)=-1
                    setflg=1
                }
            }else{
                if linedt(x,y-1)=0{
                    linedt(x,y)=-1
                    linedt(x,y-1)=1
                    setflg=1
                }
            }
            if setflg{
                cnm++
            }
        }
        await
    loop
    sx=120:sy=80
    inlr=100
    inlc=16
    repeat rmx:y=cnt
        line sx,sy-inlc,sx,sy+(cmx+1)*inlc
        repeat cmx:x=cnt
            if linedt(x,y)=1{
                ty=sy+x*inlc
                line sx,ty,sx+inlr,ty
            }
        loop
        sx+inlr
    loop

    0
      posted by higashijugem 22:13comments(0)|-|





      慣性の法則

      慣性の法則のプログラムです

      十字キーを押すことで物体を移動させます

       

       

      cx=320.0
      cy=240.0
      mv=0.1
      vis=0.02
      cmx=0.0
      cmy=0.0
      angle=0
      cszh=16
      gw=640:gh=480
      *main
          color:boxf:color 255,255,255
          getkey k37,37
          getkey k38,38
          getkey k39,39
          getkey k40,40
          angle=0:kpush=0
          if k37{
              angle+180:kpush++
          }
          if k38{
              angle+90:kpush++
          }
          if k40{
              angle+270:kpush++
          }
          if k39{
              if k40{
                  angle+360
              }else{
                  angle+0
              }
              kpush++
          }
          if kpush>0{
              angle/kpush
              cmx+=cos(deg2rad(angle))*mv
              cmy-=sin(deg2rad(angle))*mv
          }else{
              cmx-=vis*cmx
              cmy-=vis*cmy
          }
          cx+=cmx
          cy+=cmy
          ;バウンド
          if cx<cszh{        ;左壁
              cx=0f+cszh
              cmx=-cmx
          }
          if cx>gw-cszh{    ;右壁
              cx=0f+gw-cszh
              cmx=-cmx
          }
          if cy<cszh{        ;上壁
              cy=0f+cszh
              cmy=-cmy
          }
          if cy>gh-cszh{    ;下壁
              cy=0f+gh-cszh
              cmy=-cmy
          }
          color 255,255,255
          circle cx-cszh,cy-cszh,cx+cszh,cy+cszh
          redraw:await 17:redraw 0
          goto *main

      0
        posted by higashijugem 19:16comments(0)|-|





        落下と上昇

        落下と上昇を組み合わせたアルゴリズムです

        そのままでは物体が落ちていくだけですが、上キーを押すことで上昇させることができます

         


        vy=0.0        ;速度
        ay=0.0        ;加速度
        vis=0.05    ;粘性抵抗係数
        grav=0.8    ;重力

        chx=320.0
        chy=240.0
        border=480
        chcsz=24:chcszh2=chcsz/2
        fallflg=1
        *main
            color:boxf
            getkey k38,38
            if k38{
                if fallflg=0{
                    ay=0.0
                    vy=0.0
                    chy-=1.0
                }
                fallflg=1
                ay=-grav+(vis*(-vy))
            }else{
                if fallflg=1{
                    ay=grav-(vis*vy)
                }
            }
            vy+ay
            chy+vy
            if chy>=border{
                chy=border
                fallflg=0
            }
            color 255,255,255
            boxf chx-chcszh2,chy-chcsz,chx+chcszh2,chy
            redraw:await 17:redraw 0
            goto *main

        0
          posted by higashijugem 19:10comments(0)|-|





          縄張りアルゴリズム

          一定の範囲内に進入した場合のみ、キャラクターを追いかけるプログラムです

           

           

          #enum e_i_sflg=0
          #enum e_i_stype
          #enum e_i_rsensx
          #enum e_i_rsensy
          #enum e_i_rsenslen
          #enum e_i_target
          #enum e_d_sx=0
          #enum e_d_sy
          #enum e_d_srad
          #enum e_d_sspd
          pirad2=M_PI*2

          spsum=2
          steer=0.01
          dim i_shipdt,6,spsum
          ddim d_shipdt,4,spsum
          i_shipdt(0,0)=1,0
          d_shipdt(0,0)=600.0, 400.0, deg2rad(220), 0.5
          i_shipdt(0,1)=1,1,300,320,200,-1
          d_shipdt(0,1)=300.0, 320.0, deg2rad(0), 0.0

          *main
              color 255,255,255:boxf:color
              repeat spsum:spid=cnt
                  if i_shipdt(e_i_sflg,spid){
                      rad=d_shipdt(e_d_srad,spid)
                      spd=d_shipdt(e_d_sspd,spid)
                      d_shipdt(e_d_sx,spid)+=cos(rad)*spd
                      d_shipdt(e_d_sy,spid)+=sin(rad)*spd
                      if i_shipdt(e_i_stype,spid)=0{
                          color ,,255
                      }else{    ;相手のなわばりアルゴリズム
                          rsx=0f+i_shipdt(e_i_rsensx,spid)
                          rsy=0f+i_shipdt(e_i_rsensy,spid)
                          len=0f+i_shipdt(e_i_rsenslen,spid)
                          ;なわばり範囲
                          color:circle rsx-len,rsy-len,rsx+len,rsy+len,0
                          espx=d_shipdt(e_d_sx,spid)
                          espy=d_shipdt(e_d_sy,spid)
                          esprad=d_shipdt(e_d_srad,spid)
                          espspd=d_shipdt(e_d_sspd,spid)
                          losid=-1
                          if i_shipdt(e_i_target,spid)>=0{
                              fspx=d_shipdt(e_d_sx,i_shipdt(e_i_target,spid))
                              fspy=d_shipdt(e_d_sy,i_shipdt(e_i_target,spid))
                              tlen=sqrt(powf(rsx-fspx,2)+powf(rsy-fspy,2))
                              if len>tlen{
                                  i_shipdt(e_i_target,spid)=-1
                              }
                          }
                          if i_shipdt(e_i_target,spid)<0{
                              repeat spsum:tspid=cnt
                                  if spid!=tspid&i_shipdt(e_i_stype,tspid)=0{
                                      fspx=d_shipdt(e_d_sx,tspid)
                                      fspy=d_shipdt(e_d_sy,tspid)
                                      tlen=sqrt(powf(rsx-fspx,2)+powf(rsy-fspy,2))
                                      if len>tlen{
                                          len=tlen
                                          losid=tspid
                                          d_shipdt(e_d_sspd,spid)=0.8
                                      }
                                  }
                              loop
                          }
                          if losid>=0{    ;縄張り内に侵入者
                              i_shipdt(e_i_target,spid)=losid
                              rot2=atan(fspy-espy,fspx-espx)
                              rot1=esprad
                              ;下の行をアンコメントするとどこまでも追いかける
                              ;i_shipdt(e_i_rsenslen,spid)=999999
                          }else{    ;侵入者が縄張り外に出た場合
                              tlen=sqrt(powf(rsx-espx,2)+powf(rsy-espy,2))
                              if tlen>10{    ;ほぼ中心地に戻る
                                  rot2=atan(rsy-espy,rsx-espx)
                                  rot1=esprad
                              }else{
                                  d_shipdt(e_d_sspd,spid)=0.0
                              }
                          }
                          ;ターゲットの進行方向と、ターゲットから見た標的の角度差
                          rad=rot2-rot1
                          ;方向の値が0〜円周率に収まるようにする
                          if rad>M_PI:rad-pirad2
                          if rad<-M_PI:rad+pirad2
                          if rad>steer{d_shipdt(e_d_srad,spid)+steer}
                          if rad<-steer{d_shipdt(e_d_srad,spid)-steer}
                          color 255
                      }
                      x=d_shipdt(e_d_sx,spid):y=d_shipdt(e_d_sy,spid)
                      circle x-10,y-10,x+10,y+10
                  }
              loop
              redraw:await 17:redraw 0
              goto *main

          0
            posted by higashijugem 12:10comments(0)|-|





            迎撃アルゴリズム

            キャラクターの接触ポイントを予測し、それに基づいた行動をさせるアルゴリズムです

             


            #enum e_i_sflg=0
            #enum e_i_stype
            #enum e_d_sx=0
            #enum e_d_sy
            #enum e_d_srad
            #enum e_d_sspd
            pirad2=M_PI*2

            spsum=2
            steer=0.01
            dim i_shipdt,2,spsum
            ddim d_shipdt,4,spsum
            i_shipdt(0,0)=1,0
            d_shipdt(0,0)=600.0, 400.0, deg2rad(220), 0.5
            i_shipdt(0,1)=1,1
            d_shipdt(0,1)=50.0, 420.0, deg2rad(0), 0.8

            *main
                color 255,255,255:boxf:color
                repeat spsum:spid=cnt
                    if i_shipdt(e_i_sflg,spid){
                        rad=d_shipdt(e_d_srad,spid)
                        spd=d_shipdt(e_d_sspd,spid)
                        d_shipdt(e_d_sx,spid)+=cos(rad)*spd
                        d_shipdt(e_d_sy,spid)+=sin(rad)*spd
                        x=d_shipdt(e_d_sx,spid):y=d_shipdt(e_d_sy,spid)
                        if i_shipdt(e_i_stype,spid)=0{
                            color ,,255
                        }else{    ;相手の迎撃アルゴリズム
                            len=999999.0
                            espx=d_shipdt(e_d_sx,spid)
                            espy=d_shipdt(e_d_sy,spid)
                            esprad=d_shipdt(e_d_srad,spid)
                            espspd=d_shipdt(e_d_sspd,spid)
                            losid=-1
                            repeat spsum:tspid=cnt
                                if spid!=tspid&i_shipdt(e_i_stype,tspid)=0{
                                    fspx=d_shipdt(e_d_sx,tspid)
                                    fspy=d_shipdt(e_d_sy,tspid)
                                    tlen=sqrt(powf(espx-fspx,2)+powf(espy-fspy,2))
                                    if len>tlen{
                                        len=tlen
                                        losid=tspid
                                    }
                                }
                            loop
                            if losid>=0{
                                fspx=d_shipdt(e_d_sx,losid)
                                fspy=d_shipdt(e_d_sy,losid)
                                fsprad=d_shipdt(e_d_srad,losid)
                                fspspd=d_shipdt(e_d_sspd,losid)
                                fax=cos(fsprad)*fspspd:fay=sin(fsprad)*fspspd
                                eax=cos(esprad)*espspd:eay=sin(esprad)*espspd
                                vrx=fax-eax:vry=fay-eay
                                srx=fspx-espx:sry=fspy-espy
                                tc=sqrt(srx*srx+sry*sry)/sqrt(vrx*vrx+vry*vry)
                                stx=fspx+fax*tc:sty=fspy+fay*tc
                                ;予測衝突地点
                                color:circle stx-10,sty-10,stx+10,sty+10,0
                                rot2=atan(sty-espy,stx-espx)
                                rot1=esprad
                                ;ターゲットの進行方向と、ターゲットから見た標的の角度差
                                rad=rot2-rot1
                                ;方向の値が0〜円周率に収まるようにする
                                if rad>M_PI:rad-pirad2
                                if rad<-M_PI:rad+pirad2
                                if rad>steer{d_shipdt(e_d_srad,spid)+steer}
                                if rad<-steer{d_shipdt(e_d_srad,spid)-steer}
                            }
                            color 255
                        }
                        circle x-10,y-10,x+10,y+10
                    }
                loop
                redraw:await 17:redraw 0
                goto *main

            0
              posted by higashijugem 21:51comments(0)|-|





              LOSアルゴリズム

              キャラクターの追跡アルゴリズムです

              直線する青を赤色が追いかけます

               


              #enum e_i_sflg=0
              #enum e_i_stype
              #enum e_d_sx=0
              #enum e_d_sy
              #enum e_d_srad
              #enum e_d_sspd
              pirad2=M_PI*2

              spsum=2
              steer=0.01
              dim i_shipdt,2,spsum
              ddim d_shipdt,4,spsum
              i_shipdt(0,0)=1,0
              d_shipdt(0,0)=600.0, 400.0, deg2rad(220), 0.5
              i_shipdt(0,1)=1,1
              d_shipdt(0,1)=50.0, 420.0, deg2rad(0), 0.8

              *main
                  color 255,255,255:boxf:color
                  repeat spsum:spid=cnt
                      if i_shipdt(e_i_sflg,spid){
                          rad=d_shipdt(e_d_srad,spid)
                          spd=d_shipdt(e_d_sspd,spid)
                          d_shipdt(e_d_sx,spid)+=cos(rad)*spd
                          d_shipdt(e_d_sy,spid)+=sin(rad)*spd
                          x=d_shipdt(e_d_sx,spid):y=d_shipdt(e_d_sy,spid)
                          if i_shipdt(e_i_stype,spid)=0{
                              color ,,255
                          }else{    ;相手の追跡アルゴリズム
                              len=999999.0
                              espx=d_shipdt(e_d_sx,spid)
                              espy=d_shipdt(e_d_sy,spid)
                              esprad=d_shipdt(e_d_srad,spid)
                              losid=-1
                              repeat spsum:tspid=cnt
                                  if spid!=tspid&i_shipdt(e_i_stype,tspid)=0{
                                      fspx=d_shipdt(e_d_sx,tspid)
                                      fspy=d_shipdt(e_d_sy,tspid)
                                      tlen=sqrt(powf(espx-fspx,2)+powf(espy-fspy,2))
                                      if len>tlen{
                                          len=tlen
                                          losid=tspid
                                      }
                                  }
                              loop
                              if losid>=0{
                                  fspx=d_shipdt(e_d_sx,losid)
                                  fspy=d_shipdt(e_d_sy,losid)
                                  rot2=atan(fspy-espy,fspx-espx)
                                  rot1=esprad
                                  ;ターゲットの進行方向と、ターゲットから見た標的の角度差
                                  rad=rot2-rot1
                                  ;方向の値が0〜円周率に収まるようにする
                                  if rad>M_PI:rad-pirad2
                                  if rad<-M_PI:rad+pirad2
                                  if rad>steer{d_shipdt(e_d_srad,spid)+steer}
                                  if rad<-steer{d_shipdt(e_d_srad,spid)-steer}
                              }
                              color 255
                          }
                          circle x-10,y-10,x+10,y+10
                      }
                  loop
                  redraw:await 17:redraw 0
                  goto *main

              0
                posted by higashijugem 20:12comments(0)|-|





                三次元極座標

                三次元の球面上に点を描写するプログラムです

                原点から一定の距離にランダムで点を配置します

                 

                #include "d3m.hsp"
                #const double CAMERA_R 180
                #const double PI 3.1415
                randomize
                r=60.0
                camera_phi=PI/3.0
                camera_theta=0.0
                old_mx=0
                old_my=0
                d3mkparticle 0,255,255,255

                sum=120
                dim x,sum
                dim y,sum
                dim z,sum
                repeat sum    ;球面上にパーティクル配置
                    rad0=deg2rad(rnd(360))
                    rad1=deg2rad(rnd(360))
                    ;曲座標を求める式
                    x(cnt)=r*sin(rad0)*cos(rad1)
                    y(cnt)=r*sin(rad0)*sin(rad1)
                    z(cnt)=r*cos(rad0)
                loop
                *main
                    color:boxf:color 255,255,255
                    ok1=k1:getkey k1,1:tk1=k1^ok1&k1
                    gosub *move_camera
                    gosub *draw
                    redraw:await 17:redraw 0
                    goto *main

                *draw        ;座標軸とパーティクルの描写
                    color 255:d3line -r,0,0,r,0,0
                    color ,255:d3line 0,-r,0,0,r,0
                    color ,,255:d3line 0,0,-r,0,0,r
                    gmode 5, , , 255
                    repeat sum
                        d3particle 0, x(cnt), y(cnt), z(cnt), 5
                    loop
                    return
                *move_camera    ;ドラッグでカメラ視点移動
                    if k1{
                        if ok1{
                            camera_theta += 0.01 * ( old_mx - ginfo_mx )
                            camera_phi   = limitf( camera_phi + 0.01 * ( old_my - ginfo_my ), 0.01, PI - 0.01 )
                        }
                        old_mx = ginfo_mx
                        old_my = ginfo_my
                    }
                    d3vrotate camera_x, camera_y, camera_z, 0, 0, CAMERA_R, 0, 1, 0, camera_phi
                    d3vrotate camera_x, camera_y, camera_z, camera_x, camera_y, camera_z, 0, 0, 1, camera_theta
                    d3setcam  camera_x, camera_y, camera_z
                    return

                0
                  posted by higashijugem 16:46comments(0)|-|





                  点同士を繋ぐ線

                  点と点の間に直線を描写するプログラムです

                  点同士をドラッグすることで線を引けます


                  randomize
                  areal=20
                  sum=10
                  dim ptcct,sum,sum
                  cctnum=0
                  dim ptxy,2,sum
                  repeat sum
                      ptxy(0,cnt)=rnd(640),rnd(480)
                  loop
                  setid=-1
                  *main
                      mux=mousex:muy=mousey
                      ok1=k1:getkey k1,1:tk1=k1^ok1&k1:rk1=k1^ok1&ok1
                      color 255,255,255:boxf:color
                      if tk1{    ;点をクリック
                          repeat sum
                              len=sqrt(powf(mux-ptxy(0,cnt),2)+powf(muy-ptxy(1,cnt),2))
                              if len<=areal{
                                  setid=cnt
                                  break
                              }
                          loop
                      }
                      if k1{
                          if setid>=0{    ;別の点にドラッグすることでラインを描写
                              repeat sum
                                  len=sqrt(powf(mux-ptxy(0,cnt),2)+powf(muy-ptxy(1,cnt),2))
                                  if len<=areal{
                                      if cnt!=setid{
                                          ptcct(cnt,setid)=1
                                          ptcct(setid,cnt)=1
                                          setid=cnt
                                          break
                                      }
                                  }
                              loop
                          }
                      }else{
                          setid=-1
                      }
                      ;点描写
                      repeat sum
                          x=ptxy(0,cnt):y=ptxy(1,cnt)
                          circle x-10,y-10,x+10,y+10
                      loop
                      ;ライン描写
                      repeat sum-1:j=cnt
                          repeat sum-(j+1),j+1:i=cnt
                              if ptcct(i,j)=1{
                                  sx=ptxy(0,i):sy=ptxy(1,i)
                                  gx=ptxy(0,j):gy=ptxy(1,j)
                                  line gx,gy,sx,sy
                              }
                          loop
                      loop
                      redraw:await 17:redraw 0
                      goto *main

                  0
                    posted by higashijugem 22:34comments(0)|-|





                    壁の透過

                    壁の向こう側にいるキャラクターがいる場合、キャラと壁が重なる部分を半透明で表示するプログラムです

                     

                     

                    ;壁の透過
                    #enum d_main=0
                    #enum d_wallwd
                    #enum d_maskchip
                    #enum d_chip
                    #enum d_bb0
                    #enum d_bb1
                    #enum d_maskwd
                    #include "gdi32.as"
                    #const SRCINVERT $00660046
                    csz=64
                    ;チップ画像
                    buffer d_chip,csz*3,csz*2:celdiv d_chip,csz,csz
                    color:boxf:x=0:y=0
                    color 255:circle x,y,x+csz-1,y+csz-1:y+csz    ;キャラ
                    color ,,255:boxf x,y,x+csz-1,y+csz-1:y+csz    ;壁
                    ;チップの黒白画像を作成
                    x1=csz:x2=csz*2
                    ty=0
                    repeat 2
                        repeat csz:j=cnt
                            repeat csz:i=cnt
                                pget i,ty+j
                                cl=ginfo(16)+ginfo(17)+ginfo(18)
                                if cl>0{
                                    color 1
                                    pset x1+i,ty+j
                                    color 255,255,255
                                    pset x2+i,ty+j
                                }
                            loop
                        loop
                        ty+csz
                    loop
                    ;マップ作成
                    mc=11:mr=8
                    gw=mc*csz:gh=mr*csz
                    dim mapdt,mc,mr
                    repeat 24
                        x=rnd(mc):y=rnd(mr)
                        mapdt(x,y)=1
                    loop
                    buffer d_bb0,gw,gh    ;XOR用1
                    hdc0=hdc
                    buffer d_bb1,gw,gh    ;XOR用2
                    hdc1=hdc
                    buffer d_wallwd,gw*2,gh    ;壁表示用
                    buffer d_maskwd,gw,gh    ;重複範囲用
                    ;処理開始
                    screen d_main,gw,gh
                    repeat
                        mux=mousex:muy=mousey
                        gsel d_bb0:color 255,255,255:boxf
                        gsel d_bb1:color 255,255,255:boxf
                        gsel d_wallwd:color:boxf
                        gsel d_maskwd:color 255,255,255:boxf
                        ;障害物の画像とマスク画像を描写
                        gsel d_wallwd
                        gmode 2
                        gsel d_bb1
                        gmode 2
                        repeat mr:j=cnt
                            repeat mc:i=cnt
                                if mapdt(i,j){
                                    gsel d_bb1
                                    x=csz*i:y=csz*j
                                    pos x,y:celput d_chip,1*3+1
                                    gsel d_wallwd
                                    pos x,y:celput d_chip,1*3
                                    pos x+gw,y:celput d_chip,1*3+2
                                }
                            loop
                        loop
                        ;XORコピーを用いて重なる範囲を取得する
                        BitBlt hdc0,0,0,gw,gh,hdc1,0,0,$00660046
                        gsel d_bb1
                        pos mux,muy:celput d_chip,0*3+2
                        BitBlt hdc0,0,0,gw,gh,hdc1,0,0,$00660046
                        ;重複範囲を半透明にする
                        gsel d_maskwd:color 128,128,128:boxf
                        gmode 6,,,255:gcopy d_bb0,,,gw,gh
                        ;壁表示用バッファに作成した重複範囲を重ねる
                        gsel d_wallwd
                        pos gw,0:gcopy d_maskwd,,,gw,gh
                        ;メイン画像に表示
                        gsel 0
                        gmode 2
                        color 255,255,255:boxf
                        x=mux:y=muy
                        pos x,y:celput d_chip,0*3
                        gmode 7,,,125
                        pos 0,0:gcopy d_wallwd,,,gw,gh
                        redraw:await:redraw 0
                    loop

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