ページ 11

テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 03:41
by kazuoni
題名の通り、C++でちょこちょこつくっていたテトリスが最低限完成したので、
動作チェックをお願いしたく、参上しました^^

まず初めに、音が出るので注意してください^^;

LeadMeに詳しい操作等は書いてあるので、そちらを参照してください。
不具合、不都合等ございましたら、ご報告いただけうとありがたいです。
動作がよさそうなら、機能を追加し、
コードをきれいにしたら、前回のようにまたコードをUPし、組み方に
突っ込んでもらいたいと思っています。

っというか、前回Justyさん、たかぎさんにアドバイスして下さった点に
ちょこちょこ変なのがついたっという感じになっていますが。。
外部変数は使わないのモットーで組みましたが、
何をメンバにして
何をメンバ関数にして
何を静的変数にして
・・・
などが混乱しています。

そして、基本的にシングルトンから成り立っているクラスばかりなんですが・・・
これがいいのかどうか^^;
コピー禁止、二重生成・解放禁止等は前回のJustyさんのプログラムを
見よう見まねで作ってますが、はたして、オブジェクト指向で組めているのかどうか・・・

ここは次回お願いします。

DL先(バグ発見により、停止します)

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 04:28
by kazuoni
追記です。。
ゲームは赤ライン超えた瞬間に強制的に終了です^^;
PAUSEはエンターキー、強制終了はエスケープです。

今回の作品を作るのにあたって、
以前バグさんが作られたテトリスをかなり参考にさせていただきました。(動作、画面構成等)
っといか、もろかぶりです^^;すみません。。
時には動作を参考するためにウン時間とはまったり・・・
ここからオリジナリティをつけていきますので^^;

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 05:10
by BEMANI
>>kazuoniさん
URLをそのままクリックするとアクセス禁止されてしまいました。
アドレスバーに張れば問題はなかったです。



気になった点・・・
赤ライン付近にブロックがある状態で消した時、ブロックの落ち方が変でした。
落ちると言うか、ブロックが増えました・・・。
再現例ですが、一番左の列に適当にブロックを置いていき、
赤ライン付近(またはぴったり)で置くのをやめ、とりあえず一列消してみて下さい。


赤ラインを越してしまった状態で、ブロックが消せる状態でも強制終了しました。
消えてから判定する方がいいのではないかな~と思いました。


後はLeadMe.txtのスペルが違うくらいでした;;
正しくはReadMeです。(Leadだと先導といった意味です・・・)

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 08:55
by バグ
お、よくできてますね♪(^o^)b
ラインが消えるときの処理とかもキレイにつくってますねぇ…私はあの手の演出部分を作りこむのが面倒な人なので…(^_^;)
1つだけ個人的に気になったのが、ハードドロップ後に動かせてしまうのが気になるかなぁ…?
これも遊び手の好みの問題であってバグではないので、限りなくイチャモンに近いですが(苦笑)

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 11:34
by hss12
既出以外で気になったのは
左右下のボタンを長押ししたときにブロックが動き始めるまでに
少しタイムラグがあり非常にストレスがたまります。
製品版をけっこうやりこんでいるのでとても気になります。
ハードドロップは反応良いのですが。

あと、せめてNEXTがないと組み方が変わってくるのでやりこめないです。

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 12:23
by kazuoni
プレイしていただき、ありがとうございます^^

>BEMANIさん

>アクセス禁止
大変失礼しました。。直だとこうなるんですね^^;
>ブロックの落ち方
むむっ。これはフィールドコピーで規定回数コピーできていないのが
原因でした。。
>LeadMe
大学生として、お恥ずかしい限りです。。


>バグさん
>ラインが消えるときの処理
クラス化してるおかげか、修正が少しで済むので、
数通り消去を実装しましたが、これが一番しっくりきました^^;
設定等で変更できるようにしたりっとも考えてます。
>ハードドロップ後に動かせてしまう
本家は動かせないんでしたっけ?
ここはオプションで有無を設定できるようにしておきます。
(ゴーストを出す場合はなしでいいかと思いますが、ゴーストなしだと自分は落としミスするので・・・w)

>hss12さん
>長押し
本家をプレイした事がなかったもので。。大変失礼しました。。
タイムラグを今の1/3~半分に変更します。
>NEXT
これからすぐに実装します!
っといっても表示するだけですが^^;(すでに実装済み)
今後、キャラとかを画面外に割り込ませていこうかと
思っており、まだその構成ができていなかったので、ホールド、NEXTは
まだ未実装になってました。。


本当にご指摘ありがとうございます。
ご意見を参考に、完成版を数日後(?)にUPしたいと思います!

今回はこれで一応解決にさせていただきますが、
まだ何かお気づきの点がりましたら、書き込んでいってください!

最後に、プレイしていただいた皆様、本当にありがとうございました!

次回もよろしくお願いします。

追記
もしこんなのがあったらいいなっていうのがありましたら、
これも書き込んでいってください^^;
今後は
・NEXT×3
・ホールド
・ゴースト
・得点
・ステージ性(これはどこまで凝るか分かりませんが・・・)
・ハイスコア
等を予定してます。

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 14:26
by バグ
>>ゴーストを出す場合はなしでいいかと思いますが、ゴーストなしだと自分は落としミスするので・・・w

これはグリッドのようなものを表示してやればいいんじゃないでしょうか?
グリッド表示するだけで、落としミスは激減すると思いますよ(^-^)

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 18:08
by Mato
 本家ですと、詰まった所でテトリミノの向きを変え(zorxキー)ても、適当にブロックを勝手に移動させてくれます。
細かく検証したことはないので、どういうアルゴリズムなのか想像つかないんですが……


 あと、ハードドロップ後に動かすことは本家では無理ですよー。
上手くなると速さ勝負の面が強くなってきますしね。


 ともあれ、よく出来ていると思います。
ステージに期待させて頂きますっ(´▽`)

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 18:19
by dic
横槍ですいませんが
jpg機能を使われてます
著作権の表示がないようなのでその点のみ書き込みさせていただきます

ライセンスについて
http://homepage2.nifty.com/natupaji/DxL ... cense.html
より
・下記の機能を使用した場合は、配布するソフトウエアのドキュメント等に各機能に応じた
  著作権表示を含めてください。

  JPEG 画像を読みこむ機能を使用した場合

   libjpeg Copyright (C) 1991-1998, Thomas G. Lane.
   this software is based in part on the work of the Independent JPEG Group.

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 18:48
by kazuoni
ご回答ありがとうございます!

ですが、ありえないほど大きなバグを先ほど発見したので、
修正次第またUPします。
メインフィールドに食い込む動作を発見しましたorz
もしかしたらまずいことになるかもしれないので、
DLしてくださった皆様には、大変申し訳ないのですが、
ごみ箱に捨ててください^^;

>Matoさん
>適当にブロックを勝手に移動
その実装よりバグが出ました・・・。
自分はミノ回転軸中心にx,y共に±1のメインフィールド
を下からすべて探査して、置けるようならそこへっというようにしています。
(バグ出てますが・・・w)
今回実装したSpinは本家より探査範囲が1狭い事がわかったので、
再度実装しなおしてきます。
>ステージに期待させて頂きます
できる限り今まで見たことのないテトリスかつ
本来のシンプルさを失わないようにするつもりです。(・・・難しい・・・)


>dicさん
>ライセンスについて
かなり重要な忠告本当にありがとうございます!
DXライブラリの注意書きをしっかり読んでませんでした。。
次回は熟読して、不足がないように心がけます。

ッというわけで、DL停止します^^;

Re:テトリス動作チェックのお願い

Posted: 2009年4月06日(月) 18:54
by kazuoni
>バグさん
>グリッドのようなものを表示
いろいろ設定機能が付けられそうです^^
グリッドは頭にありませんでした。。
ちょっと実装してきますw

Re:テトリス動作チェックのお願い

Posted: 2009年4月07日(火) 18:40
by バグ
私も以前公開して中途半端に放ってあるテトリス(ちなみに開発言語はC#で.NET使ってます)を修正しようかなぁ…とか思いつつ、タイトル画面だけ作ってみました。完成はもう少し先かなぁ…(^_^;)

>>kazuoniさん
便乗レスでごめんなさいm(__)m

Re:テトリス動作チェックのお願い

Posted: 2009年4月07日(火) 18:50
by kazuoni
な、なんと・・・。
自分のやつがすごくアナログに見えます・・・w
完成楽しみにしています!

#現在本家とは違って、メインフィールドの大きさを変えれるような
(サイズしかり、フィールドの幅・高さもしかり[10*20]⇔[20*40]とか)
仕様にしてますが、まったく考慮していなかったので、ちょこちょこと修正作業に追われてます・・・

Re:テトリス動作チェックのお願い

Posted: 2009年4月07日(火) 19:18
by バグ
私がフィールドのサイズ変更を実装するならば、フィールド管理クラスのコンストラクタに縦・横の幅を引数で渡してブロック情報を格納する領域を動的に確保するかな?
で、縦・横幅の数値を取得するためのアクセッサも実装しておけば、他クラスから情報を知る事ができるので便利かな?とか思います。

Re:テトリス動作チェックのお願い

Posted: 2009年4月07日(火) 21:50
by kazuoni
>ブロック情報を格納する領域を動的に確保する
ちょっと自分の構想の中で、
ステージがいきなり大きくなるとかってのもちょっとだけ考えていて、(^^;)
先にある程度大きく確保することを採用しました。
大した大きさではなく、bool型なのでいいかなって思いまして^^;(30*72ぐらい)
フィールド操作も範囲を決めてめすので、無駄な探査ないですし。
(ただ、使わない配列がたくさんあるんですよね・・・)

>、フィールド管理クラス
>縦・横幅の数値を取得するためのアクセッサ
まさにそのとおりに実装しました!

一つ質問なのですが・・・
static const int型の変数っというのは普通どこに書きますか?
外部変数で扱っても問題はないんでしょうか?
なんだか自分は外部変数が良くないっという認識しかないので、
以下のように実装したのですが・・・
class GlobalConst{

public:
	static const int ONE_CELL_SIZE=20;
	static const int MAIN_FIELD_X=100;
	static const int MAIN_FIELD_Y=480;
        .....
};

class A : public GlobalConst{...};
こんな使い方はおかしいですかね?^^;

Re:テトリス動作チェックのお願い

Posted: 2009年4月07日(火) 22:12
by 御津凪
class GlobalConst{

public:
    
    enum {
        ONE_CELL_SIZE = 20,
        MAIN_FIELD_X  = 100,
        MAIN_FIELD_Y  = 480,
        .....
    };
};
列挙体としての使い方ではないけれど、こういう方法があります。

Re:テトリス動作チェックのお願い

Posted: 2009年4月07日(火) 22:25
by kazuoni
こんな方法もあるんですかっ!
enumハックっていうんですね^^;
大変参考になりました!

またもやたかぎさんのページで理解しましたw
たかぎさんのページ全部コピーしてファイルに閉じておこうかな・・・^^;

Re:テトリス動作チェックのお願い

Posted: 2009年4月08日(水) 18:50
by バグ
とりあえず、ベータ版をアップしときました(^_^;)

Re:テトリス動作チェックのお願い

Posted: 2009年4月08日(水) 20:09
by kazuoni
DLさせていただきました!

いやー。頭が上がりませんw
素晴らしいの一言です^^;
レベルが高い時はいいのですが、
低い時にちょっと横の動きが若干早いかなって思ったりするのですが・・・
本家をプレイした事がないので個人的な意見です^^;

やはりサウンドが付くと一気にゲームらしくなりますね。
自分も作業をしたいんですが・・・学校が始まるっという残念さ。。
(本業なんだからしかたがないですけど。。)
ゆっくり作業進めていきます

制作お疲れ様です!