トップページgamedev
745コメント309KB

テトリスを作る

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。02/10/07 16:53ID:Pf3z3KIH
みなさん言語は、javaでもHSPでもCでもいいからテトリス作って
ソースを載せてください
0684名前は開発中のものです。2009/03/10(火) 23:42:49ID:8Ev7tmIW
テトリスには下を押したときの落下、自動的な落下、ブロックが消えたときの
落下の3種類があるがどれのこと?
0685名前は開発中のものです。2009/03/12(木) 01:17:07ID:V0oPeIhv
>>684
あと、最近のだと上とか押して瞬間的に一番下まで落ちるのもあるよ
0686名前は開発中のものです。2009/03/13(金) 13:13:25ID:0W25G/7J
・下を押したときの落下
 キーを押している間、落下中のテトリミノのyをインクリメントし続ける(着地したら停止)
・自動的な落下
 インターバルをおいて落下中のテトリミノのyをインクリメント
・ブロックが消えたときの落下
 消えたラインから上にある積まれたテトリミノすべてのyを、一度に消したライン数ぶんだけ加算
・上を押したときの落下(ハードドロップ)
 落下中テトリミノのyインクリメントを着地するまで繰り返す
0687名前は開発中のものです。2009/03/13(金) 16:48:19ID:sfYjktES
>>686の説明でわかる人は683みたいな質問をしないと思うな
たぶんもっと基礎的なところで躓いている
0688名前は開発中のものです。2009/03/13(金) 18:00:56ID:olBL6Hp0
質問じゃなくてただの愚痴じゃないのか。
答える必要ないかと。
0689名前は開発中のものです。2009/06/06(土) 08:23:39ID:FXw0rCGK
うん
0690名前は開発中のものです。2009/06/06(土) 17:52:17ID:At8g59+4
テトリス25周年おめ!!
0691名前は開発中のものです。2009/06/07(日) 12:34:29ID:cgH0fsjW
こんなんみつけた。

一週間でテトリス
ttp://d.hatena.ne.jp/portown/20090415/1239801213
うん、二ヶ月近く経った今でもまだ完成はしてないようだけどね。
C++でデザインパターンも使いまくりで、まあなんというか
こういう人が開発する様子を眺めてみるってのもおもしろいかも。

>>690
昨日googleのロゴが変わっていてびっくりした。
0692名前は開発中のものです。2009/06/07(日) 13:06:59ID:a8YEZg9N
テトリスが有名になった少しあとぐらいの時期に
BASIC+マシン語を使って一週間くらいでテトリス作った事があって
「テトリスなんてちょろいぜ」と思っていたが
三行テトリスを知って、自分の無力さを思い知った。
(当時とは環境が違うとはいえ……)
0693名前は開発中のものです。2009/06/08(月) 14:15:24ID:NMisg64H
>>692
マジレスすると
基本操作、列消えはすぐ作れるんだ
テトリスの一番難しい箇所は
下に付いてから位置が確定される時間差の処理
穴に回転させて入れる場合の確定要素

そう言った余剰処理の方が難しいのさ
0694名前は開発中のものです。2009/06/08(月) 14:23:05ID:NMisg64H
分かりやすく言うと

□□□□
□□□□
□□□□
□□□□

これが一個の回転領域とすると
□□□□
□■□□
□■■□
□□■□
なのか?
□■□□
□■■□
□□■□
□□□□
なのか?で処理の仕方が変わるし

回転制御も
どのマスを最初に処理するソースにするかで隙間入れの処理が違う

初心者ほど
途中の回転と一列消ししか気にしない駄作作る事実

これ位覚えておけカス
0695名前は開発中のものです。2009/06/08(月) 14:28:52ID:NMisg64H
ここまで言っても分からないカスの為にもう一つ

□□□□
□■□□
□■■□
□□■□


回転後は
□□□□
□□■■
□■■□
□□□□
なのか?
□□□□
□■■□
■■□□
□□□□
なのか?

どっちで処理するんだ?って話
0696名前は開発中のものです。2009/06/08(月) 14:37:36ID:NMisg64H
>>683

抽象的な方が分かりやすいと思うから

■□□□
■□□□
■□□□
■□□□
□□□□
□□□□
□□□□
□□□□

処理(タイム関数でループ処理)

□□□□
■□□□
■□□□
■□□□
■□□□
□□□□
□□□□
□□□□

表示するプログラムと
処理するプログラムは別と考えるんだ
0697名前は開発中のものです。2009/06/08(月) 14:50:00ID:NMisg64H
今気付いた
3月って・・・
すまん
0698名前は開発中のものです。2009/06/08(月) 16:19:14ID:CpLOgfEO
ドンマイ(`・ω・´)
0699名前は開発中のものです。2009/06/08(月) 16:56:39ID:o+iAtdVT
クソースでもとりあえず動くもの作ればいいじゃない。
0700名前は開発中のものです。2009/06/08(月) 18:38:01ID:ciQxNixs
俺が一番悩んだのは

   ↓
■□■□■■
■□■□■■
■□■□■■
■□■□□■
■□□□■■
■■■■■■

こういう状況で回転させた時どうすべ、って事だな。
0701名前は開発中のものです。2009/06/08(月) 18:58:54ID:CS5VoGMq
・ガイドラインに従う
・T○Mっぽくする
・セガテトリスっぽくする
とりあえず回転法則は既にあるものをまねてみるべきだと思う。
0702名前は開発中のものです。2009/06/08(月) 21:14:09ID:mnboJmcu
この状況ではもう回転できない
■□■□■■
■□■□■■
■□■□■■
■□■□□■
■□□□■■
■■■■■■

   ..■
■□■□■■   これなら
■□■□■■
■□■□■■
■□□□□■
■□□□■■
■■■■■■

昔のセガふうテトリスだと一段上に戻って
乗っかるような動きになるのでは
■■■■
■□↑□■■
■□□□■■
■□□□■■
■□□□□■
■□□□■■
■■■■■■
0703名前は開発中のものです。2009/06/08(月) 21:22:27ID:ScR8iayc
すまない。
悩んだっつーだけで地力で解決した昔の話なの。
0704名前は開発中のものです。2009/06/10(水) 09:40:47ID:Yyxw5vo5
地力がついたのか
0705名前は開発中のものです。2009/06/11(木) 21:10:01ID:TGzW5zV2
プログラムじゃなくてゲームデザインの話だな
0706名前は開発中のものです。2009/06/11(木) 22:05:13ID:gjZGF+th
テトリスを作って動かそう!っていうスレで
そんな細かい回転法則とか操作性の工夫とかっていらないんじゃないのか
0707名前は開発中のものです。2009/06/11(木) 23:31:10ID:/TMuiCwD
HSPだと速攻で作れたが、いざCとかに移行しようとすると失敗するゆとりの俺涙目。
何も用意しなくてもウィンドウ作ってくれるHSPから離れられん。
0708名前は開発中のものです。2009/06/12(金) 00:03:47ID:ulpNcVjf
そんな貴方にDXライブラリ。
0709名前は開発中のものです。2009/06/30(火) 23:19:09ID:kpfmSDmA
俺、C+DXLibでテトリス作ってる
HSPとそう変わらない感覚で作れるぜ
0710名前は開発中のものです。2009/08/07(金) 15:35:29ID:aw3m8zWs
どなたか講評していただけませんか?
ttp://kanataofstars.web.fc2.com/tetrin.html
ページとアップローダーのテストも兼ねています。よろしくお願いいたします。

回転法則とか無視してますけど…。
0711名前は開発中のものです。2009/08/07(金) 16:34:41ID:1yFyUDa1
人柱が出るまで全裸待機
0712名前は開発中のものです。2009/08/07(金) 18:35:55ID:YopJz8wT
何十秒も待たされるのがうっとうしいな
0713名前は開発中のものです。2009/08/09(日) 11:26:42ID:5UNaihht
おいおい、いらないobjファイルとか入れるなよ〜
0714名前は開発中のものです。2009/08/09(日) 19:13:38ID:xdUCSZLH
>>713
すみません知りませんでした。削除しておきます。
0715名前は開発中のものです。2009/08/09(日) 22:29:54ID:2l2vvz9Z
>詳しくはダウンロードファイル内のリードミーにて。
リードミー入ってない。
コンピュータが弱い。
0716名前は開発中のものです。2009/08/09(日) 22:47:10ID:xdUCSZLH
>>715
>リードミー入ってない。
すみません。>>714修正時に誤って削除していました。一応ホームページから見られるようにしておきました。
>コンピュータが弱い。
調整を検討しておきます。
0717名前は開発中のものです。2009/12/08(火) 18:34:45ID:gFAFbPam
ぷよぷよつくってまして軸ぷよに対して子ぷよが90度ずつうごくような簡単なつくりならできたんですが
回転いれたぷよぷよフィーバーみたいな操作性のよいものがうまくできないです。

というより回転まではうまくできたんですがフィールドにぷよがあるときの当たり判定とクイックターンのアルゴリズムなどがうまくできないで悩んでます。
なんかいい方法ないですかね?

ちなみに今は32のマップチップみたいなものにぷよを配置するような方法でやってます。で、アクションゲームでやるような当たり判定で…
めりこんだときに上に配置するべきか横に配置するべきかがうまくできなくて挙動がおかしいんですよね

だれかいいソースみたいなの教えていただけないでしょうか?
0718名前は開発中のものです。2009/12/08(火) 20:08:39ID:NvDi18bm
アクションゲームのような当たり判定をしているとおかしくなるぞ。

入力があった時に、変化できるかできないかと、変化後の形処理をして、結果を段階的に表示する方法にしたほうがいい。
でないと意図しない動きで変な動作をすることになる。

パズルゲームなんだから、落下も回転もマップの1マスずつ移動させるように処理する。
まずは1マス単位で動くようなものを作ってから、途中段階を表示させるように変えてみようよ。
0719名前は開発中のものです。2009/12/08(火) 20:55:09ID:gFAFbPam
>>718
何ヶ月もレスのなかったスレに書き込んで、正直回答もないと思ってたので、とてもうれしいです。
ありがとうございます。

>変化できるかできないかと、変化後の形処理をして
なるほど、こういう考え方をすれば必ず処理はできそうですね。参考にさせていただきます。


>パズルゲームなんだから、落下も回転もマップの1マスずつ移動させるように処理する。
>まずは1マス単位で動くようなものを作ってから、途中段階を表示させるように変えてみようよ。

すいません、自分の説明が足らなくて、一応マス単位には消去や着地判定などもしてうごかせるものはできました。
なので、マスに縛られないものを作りたいと思いまして…。

それとどうしてここまでそこにこだわるかの理由なんですが、やはり32単位のマスで動かすとカクカクに見えるという難点があり、これはかなりゲームのクォリティを下げてしまうように感じるのです。
それだけではなく、ぷよぷよが好きなので、どうしても"まわし"に関する部分の再現であるとか地面についてから子ぷよを持ち上げて軸ぷよを浮かし、待機させるといったような表現も再現したいのです。
クイックターンも然りです。
この、http://www.youtube.com/watch?v=TGi42Csclwcにあるぷよぷよの続編(ぷよぷよフィーバー)なんですか、これらはマスに縛られないきれいな動きをしていて、こういうのを作ってみたいのです。

こういった自分の考え方は客観的にどのように感じるのかも思ったことあればまたレスお願いします。
0720名前は開発中のものです。2009/12/08(火) 21:53:25ID:665owXk2
うだうだ言ってるようだが考え方としては
内部ではマス単位で移動し、表示をドット単位にする方が正しい
0721名前は開発中のものです。2009/12/08(火) 22:49:31ID:gFAFbPam
>>720
おおおおおなんかひらめくものがありました!
完成したらうpするのでそのときまた評価などしていただけたらお願いします
たぶん今週末までにはできそうです!
0722名前は開発中のものです。2009/12/09(水) 00:56:44ID:IOr6Snmx
ある地点から右に1マス移動するのを表示する場合
内部処理ではとっくに右に移動しているが
ドット単位移動で表現しているんだな。

左右移動中に反対に入力したりとか、高速下降を中断した時とか
考えることはたくさんあるぞ。
0723名前は開発中のものです。2009/12/09(水) 17:04:36ID:wrqBjGoe
【プログラミング】テトリスを1時間強で作ってみた【実況解説】
http://www.nicovideo.jp/watch/sm8517855

「テトリスを1時間強で作ってみた」動画の投稿者にインタビュー
──「プログラミングの楽しさ伝えたい」
ブロードテイル CEO 紀平 拓男 氏
http://itpro.nikkeibp.co.jp/article/Interview/20091104/340019/
0724名前は開発中のものです。2009/12/10(木) 09:30:27ID:GOd4BvIs
>>719
作ってもいないやつから想像だけのアルゴリズムとか真に受けないほうがいいよ
よさそうと思っても実際やってみたら使えないなんてことざらにあるし

最近は適当なこというやつ多いな
0725名前は開発中のものです。2009/12/10(木) 10:50:48ID:/9raUUtW
つ鏡
0726名前は開発中のものです。2009/12/12(土) 18:38:05ID:o24Vdapk
>>721をちょっと楽しみにしてたんだが今晩くるかな?
0727名前は開発中のものです。2009/12/12(土) 20:31:55ID:sRj/YPfW
作ってもこんなところでは公開しないだろうし
こんなところじゃなくても公開はしないだろ
0728名前は開発中のものです。2009/12/12(土) 22:29:39ID:o24Vdapk
そうか もう今晩はこないかもな
一応でも明日またくるよ
0729名前は開発中のものです。2009/12/12(土) 22:39:30ID:sRj/YPfW
そもそも何を根拠に今日明日くると仮定してんの?
0730名前は開発中のものです。2009/12/12(土) 22:44:53ID:o24Vdapk
それはあなたですよwwww

俺は今週末うpってレスがあったから今日、明日じゃないかと思ったんですよw
0731名前は開発中のものです。2009/12/12(土) 22:56:37ID:0++6BlhB
え、出来るとは書いてるけどうpるとは書いてないだろ
パズルゲーの劣化コピーはプレイヤブルな状態で公開すると
完成度によっては面倒なことになるから
基本的にうpは無いものだと考えてるんだが

ID変わってるけど俺727ね
0732名前は開発中のものです。2009/12/12(土) 23:42:46ID:jl0uP9p7
完成したらうpするのでそのときまた評価などしていただけたらお願いします
07337212009/12/16(水) 10:05:51ID:mP5Wb4vT
結局完成させられませんでした
誰か操作の部分だけでかまいませんのでお手本のソース作っていただけないでしょうか?
0734名前は開発中のものです。2009/12/16(水) 14:27:12ID:2ThoUv3k
言語何よ
自分でここまでやった、てのを出すと出やすいと思うぞ。
07357212009/12/16(水) 15:04:05ID:mP5Wb4vT
>>734さんありがとうございます
HSPです。しかしC言語もかじっていたので条件文などはおおよそCに近く書いてあります。
今いらないものごちゃごちゃしてるので整理してうpしてみます
よろしくお願いします。
07367212009/12/16(水) 16:26:28ID:mP5Wb4vT
すいません,うっかり整理してたら間違って必要なファイルまで削除してしまいました/(^o^)\
モジュールだったのですが今書き直します
ちょっと待っててください
0737名前は開発中のものです。2009/12/16(水) 17:26:17ID:ujk7acGK
期待してる
頑張れ
0738名前は開発中のものです。2009/12/16(水) 18:24:09ID:2ThoUv3k
HSPだとちょっと返事が遅れるかもしれんがガンガレ
0739名前は開発中のものです。2009/12/27(日) 08:14:22ID:O973uBUq
【実況】第15回 Java(DoJa)でテトリスを作ってみた【講座】
http://www.nicovideo.jp/watch/sm9203192

iアプリのテトリスとしては良い動きしてる
0740名前は開発中のものです。2010/04/21(水) 04:39:50ID:jrhisQ/9
ttp://www.nicovideo.jp/watch/sm10103631
0741名前は開発中のものです。2011/03/22(火) 15:33:07.92ID:eIV0YQSI
テトリスのブロックの形ってどういうデータにしてますか?

たとえば
□□□□
□■■□
□■■□
□□□□
の場合、

やり方1
0, 0, 0, 0,
0, 1, 1, 0,
0, 1 1, 0,
0, 0, 0, 0,
2次元配列でこういう風に持っておく

やり方2
1, 1
2, 1
1, 2
2, 2
1次元配列でこういう風に持っておく

1のほうが直観的でわかりやすいけど
2のほうがプログラムがシンプルになりそう

自分がやるならどっちか、それぞれのメリットデメリット、
他にこんな方法があるよっていうのがあれば教えてください
0742名前は開発中のものです。2011/03/22(火) 19:48:55.69ID:P3mon26Q
4つだけの時はそれほど変わりは無い。

大きい変則ブロックを出したいなら二次元配列がいい。
回転以外の変形や分割もさせたいなら一次元配列がいい。
0743名前は開発中のものです。2011/03/22(火) 20:17:37.29ID:ZyN29BQg
>>721とは別人だが、完成したのでうp
ttp://www1.axfc.net/uploader/O/so/158875
意見、感想求む
(音楽データがあるので46.8MBとちょっとサイズが大きいです)
0744名前は開発中のものです。2011/03/22(火) 20:19:52.43ID:ZyN29BQg
>>741

>>742のいうとおり、イレギュラーに対応することを考えると違ってくるかもね
1だと無駄が多い(ブロックのある場所を調べるのに配列の中全部を
調べないといけないし、配列のサイズも大きい)けど、自由度は高い
2だと無駄は少ないけどブロックを5個にしたりはできない

↓私はこんな感じでやった(HSP)
; J型
tet(4,0,0,XE) = 2 : tet(4,0,0,YE) = 2 ;    
tet(4,0,1,XE) = 1 : tet(4,0,1,YE) = 2 ;3   
tet(4,0,2,XE) = 0 : tet(4,0,2,YE) = 2 ;210 
tet(4,0,3,XE) = 0 : tet(4,0,3,YE) = 1 ;    

tet(4,1,0,XE) = 1 : tet(4,1,0,YE) = 2 ; 23 
tet(4,1,1,XE) = 1 : tet(4,1,1,YE) = 1 ; 1  
tet(4,1,2,XE) = 1 : tet(4,1,2,YE) = 0 ; 0  
tet(4,1,3,XE) = 2 : tet(4,1,3,YE) = 0 ;    

tet(4,2,0,XE) = 0 : tet(4,2,0,YE) = 1 ;    
tet(4,2,1,XE) = 1 : tet(4,2,1,YE) = 1 ;012 
tet(4,2,2,XE) = 2 : tet(4,2,2,YE) = 1 ;  3 
tet(4,2,3,XE) = 2 : tet(4,2,3,YE) = 2 ;    

tet(4,3,0,XE) = 1 : tet(4,3,0,YE) = 0 ; 0  
tet(4,3,1,XE) = 1 : tet(4,3,1,YE) = 1 ; 1  
tet(4,3,2,XE) = 1 : tet(4,3,2,YE) = 2 ;32  
tet(4,3,3,XE) = 0 : tet(4,3,3,YE) = 2 ;    

tet(種類の番号, 回転の状態, ブロックの番号, X座標かY座標か) という
四次元配列で、事前に全て決めておく方法
0745名前は開発中のものです。2011/09/08(木) 20:50:24.43ID:cPUulUtX
はい、ムリ〜。
■ このスレッドは過去ログ倉庫に格納されています