管理・サイト関連
管理画面(管理人専用です)
リンク
プロフィール

asrite

書いてる人 : asrite
やあ(´・ω・`)
ようこそ、あすらブログへ。
この日記はサービスだから、まずは読んで落ち着いて欲しい。
ブログ足跡機能があるので、気まぐれに足跡を返します。


▼押してくれると嬉しいです。
人気blogランキング

カテゴリ
月別アーカイブ
07月(1)  06月(1)  03月(2)  02月(1)  01月(1)  12月(1)  11月(1)  09月(2)  08月(1)  05月(2)  04月(1)  03月(2)  02月(3)  01月(2)  11月(1)  10月(2)  09月(3)  07月(4)  06月(4)  05月(4)  04月(2)  03月(2)  02月(1)  12月(3)  11月(1)  10月(3)  09月(6)  08月(2)  07月(2)  06月(1)  05月(3)  04月(1)  03月(2)  02月(3)  01月(10)  12月(1)  11月(4)  10月(1)  09月(3)  08月(6)  07月(4)  06月(7)  05月(4)  04月(4)  03月(3)  02月(4)  01月(5)  12月(1)  11月(3)  10月(5)  09月(5)  08月(4)  07月(3)  06月(3)  05月(3)  04月(4)  03月(2)  02月(4)  01月(8)  12月(8)  11月(1)  10月(3)  09月(2)  08月(4)  07月(4)  06月(1)  05月(2)  04月(2)  03月(6)  02月(5)  01月(1)  12月(3)  11月(4)  10月(6)  09月(6)  08月(7)  07月(5)  06月(5)  05月(7)  04月(13)  03月(6)  02月(7)  01月(5)  12月(13)  11月(19)  10月(12)  09月(28)  08月(27)  07月(22)  06月(22)  05月(28)  04月(26)  03月(35)  02月(20)  01月(22)  12月(25)  11月(23)  10月(20)  09月(20)  08月(15)  07月(15)  06月(15)  05月(13)  04月(15)  03月(15)  02月(5)  01月(12)  12月(5)  11月(7)  10月(10)  09月(11)  08月(13)  01月(2) 
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


《カテゴリ》 スポンサー広告 | 《更新日》 --/--/-- [--]
[ no tag ]
- HSPでぷよぷよ連鎖シミュレータを作る -

だいぶ、形が出来上がってまいりました

↓現状の完成度(動画)
http://y.to.cx/movie/puyo_simyu1.wmv
(リンク切れしてたらすみません)

@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@

無事にぷよの消去判定を乗り越えました。
これを乗り越えた後はしばらく安心してよさそうだ、
データセーブ&ロードまでは、特に大きな壁はなさそうだからね。

そうそう、ぷよ消去判定にポインタが必要とか言ってましたが
ポインタでなくとも、HSPにポインタっぽい機能があることに気付きました。

例えば↓
#defcfunc delchk int i , int j , array f ,local now , local n
  ...
return

こんな関数があったとします。
(ちなみにこれは、隣接する同色ぷよの個数を返す再帰関数)

呼び出しは、例えば
dim f,6,14 // 2次元配列 f を定義 , i , j は整数
...
n = delchk(i,j,f)

と言う風に、普通に呼び出せばいいんですが・・・

これって、どう考えても f のアドレス渡してない

いやまだこれは憶測に過ぎないけどさ
もしかしたら、当初の予想通り、呼び出すたびに新たな f を作るかもしれないけどさ

うん
っていうか裏づけとなる考えを述べるまでもなく
f のアドレス渡してるよね、うん
数学的に言えば「明らかに成り立つ」だよね
うん

この続きは後に回す

@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@

現在の実装機能
(記事上部に載せた動画より、少し進んでいます)

・スペースでぷよを置き、更にスペースでぷよの色を変更できる。
・Shift+スペースで、ぷよの色を逆順に変更できる。
・おじゃまぷよ追加。
 消去判定もばっちり。
・鉄ぷよ追加。
・連鎖数の表示。
・連鎖中に、新たにぷよを置くことができる。つまりアクティブ連鎖が可能
・幽霊ぷよの判定を追加。

依然としてマウスは対応せず。これは後回しでいい。

あとは、スペースでぷよの色を変更するのではなく、
例えば r で赤ぷよ、 g で緑ぷよを置くみたいに、ぷよを直接配置できるようにしたいところですね。
幸い、今のところキーが被るとかもなさそうだし(RGBYP OIW)、これは楽かな。

んで、今すぐとは言わないが、いつか壁を追加したい。
でも今のぷよ落下アルゴリズムのままだと、恐らくぷよは壁を突き抜けます
それじゃ壁の意味が無いっつーわけで。

うむ、壁ぷよの実装は難しそうだな。
ってかせっかくの落下アルゴリズムを根本から変えなければならないのが嫌だ。

-----

以下ポインタの考察

~ 広告 ~
~ この記事の続き ~

#defcfunc のヘルプ見てて、エイリアス名・・・
#defcfunc func_name int a , double b , ...
この int とか double とかをエイリアス名とかいうらしいんですが
平たく言えば「関数内でのデータ型」と言って差し支えないかな、

このエイリアス名、
int , double , str のほかに
わざわざ変数としての var と array が用意されているんです。

ヘルプを何回も読み直しても、この var の存在意義が全く分からなかった。
だって、値を渡すだけなら、それこそ int とか double とかにすればいいもんね。



これ、実はアドレスを渡すものだったのならば、辻褄が合うの。

私の仮定ですが(ただし確信に近いが)、
var とその他、例えば int の使い分けについて、
#module
#deffunc plus1 int a // deffunc は関数ではなく、「命令」を定義
  a++
return

#deffunc plus2 var a
  a++
return

#global

abc = 1
def = 1
plus1 abc // 命令の場合は、こう呼び出す
plus2 def

このとき、最終的に abc は 1 のままだけど、 def は 2 になるのね
うん これって普通にアドレス渡してるよね
ていうかポインタそのものじゃね

文法を無視して、ていうか文法忘れかけてるけど、これをC言語風に例えれば
void plus1 ( int a ) { a++ }
void plus2 ( int *a ) { *a++ }

void main {
  int abc = 1
  int def = 1
  plus1(abc)
  plus2(&def)
}

みたいな感じじゃね

厳密には結構違うけど、つまり、関数/命令内での
HSPの int a と var a の違いは
C言語の int a と int *a の違い
に近いってことよな

で、HSPはポインタが分からん人を考慮して、* や & を使わずにアドレス渡しを実装したと。


おしまい☆

@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@-@

ってかこの事実に気付かずに

/* --- 二次元配列をコピーする命令 --- */
#deffunc arraycopy array a,array b,local i,local j
 for i,0,length(a) // 配列の1次元目の要素数
 for j,0,length2(b) // 配列の2次元目の要素数
   b(i,j) = a(i,j)
 next
 next
return
...

↑こんなことしてたから恐ろしい。

ぷよ消去判定を作る、それよりもずっと前に作った命令ですが・・・
この時点で気付けよw
関連記事

人気blogランキング Blogランキング参加中。投票してもらえると嬉しいです。

《カテゴリ》 日記 | 《更新日》 2009/02/10 [火]
《タグ》 ゲームプログラミングHSPぷよぷよ
コメント情報・編集
コメントの投稿










(送信ボタンを押すと、即座にコメントが投稿されます)

トラックバック

※お手数ですが、"http"という単語を含まぬようお願いします。
Page top
ブログ内検索
カレンダー
07 | 2017/08 | 09
- - 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 - -
最近のコメント
FC2カウンター
RSS
アクセス解析など

この人とブログ友達になる

スポンサーリンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。