C言語でテトリス作って!👾 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>1
ニコニコやらつべで作ってる動画出してる人居たでしょ 学生時代のC習い立ての頃にブロック崩しなら作ったがテトリスは作ったことないな なんでテトリスつくってなのの
インベーダーのアイコンなんだよw >>7
ゲームっぽい絵文字がこれぐらいしか見当たらなかった… そんな動画見るよりこのサイト見て一通りやれば三日ぐらいで作れるぞ。
http://dixq.net/g/ ゲハをなんかと勘違いしてる馬鹿
いちいち全レスしてんなハゲ なんかNGワードで弾かれるからググれ、あとSiv3Dとかの方がかっこいい書き方できるぞ >>9
素直に草だ…w
エクセルとかでも出来るらしいね〜★ 作りたいってんならまだわかるけど
作ってる所見せてってどういうことよ >>17
要はソースコード見たい
あと普通に作ってみたい テトリス ソースコード C言語で検索したらすぐ出てきたが >>19
なんか規制かかったからセルラーら。
ググろう、作ってる間分からんことが出てきたら毎回スレ立てて聞くつもりか? >>6
windowsでゲームを作る一番基本的なものでdirectxというものがある
ゲハでもお馴染みだよね
でもdirectxは難しい
だから親切な人がdirectxを使いやすくラッピングしたライブラリを
作ってくれた
それがdxライブラリ >>23
ありがとう😊
グリグリくん よく見かけるし優しいからすこだ😘 1111111
1000001
1000001
1000001
1000001
1000001
1000001
1111111
みたいなマップを作って
11
11
見たいなオブジェクトをいくつか作って
タイマーかけて規定時間ごとに一番上から一行づつ落としてく
オブジェクトの移動先の位置に、1があったらオブジェクトは移動せず、新しいオブジェクトを一番上に追加
あとはキー入力で回転させたり横に動かしたり一気に下まで(1が出てくるまで)落としたり
新しいオブジェクトを追加する際に初期出現位置に1があったら、ゲームオーバー あ、オブジェクト移動後に行をチェックして、一行全部1だったらそれより上の行を下に移動、一番上に全部0の行を追加しないとテトリスにならんね エクセルでテトリス作ったことあるw
セルを正方形にして作るのわりと楽しい
後に正方形の縦の長さを10分割してみたりしまして
なめらかにおちるテトリスも作ってみたりしました テトリスを自分で作る場合一番難しいのはTスピンの挙動だろうな main()
{
while (true) {
input();
update();
draw();
sleep();
}
}
言語に関わらず大体こういう感じ >>31
回転後のオブジェクトの配置位置にフラグが立ってなきゃOKなだけだから何も難しくない・・・というか、プログラム上特にいじるところはいないよ
今のはTスピンだ!って判定するのは手を入れないとダメだけど >>34
Tスピンってただ回転させただけじゃなくてズレた隙間に入り込んだり
しなかったっけ?
その辺難しくない? テトリスあんまり詳しくないけど普通に実装したらTスピン満たせるくない?
既に言われてる通り、それを判定するのはちゃんと処理させなきゃ駄目だけど いや無理だろ
ダブルスピンまでならともかく
トリプルスピンどうやるのよ Tスピンについてはじっくりサイトで条件説明してるところがある
それをサボったらちょっと簡単なテトリスやダブリがはいっちゃうよね >>39
おお
これこれ
俺が言ってんのこのトリプル 回転の途中は判定しないので
回転後にハマるかどうか→ハマる→じゃぁ回転って処理にしとけばOKだし
回転軸の変更を許容するならより緩くなる
自動判定でなく任意だとよりテクニカルでおもろくなりそうでもあるけど .■
■●■
●が軸 これを任意で
● ■
■■■
こんな風にして回すと
ハマるなら壁の深い所にもハマるみたいな 軸を2つにして、一つ目の軸で動かないなら2つめの軸で回転させるのかなるほど スピンは無くてもゲーム成立するから構わんけどスーパーローテーション導入は必須だし怠そう >>9
javascripで7行とか無能かよ
1行で十分だ >>50
unityも悪くないが
unityはフィールドがあるゲーム向けのエンジンなんだよ
テトリスのようなグリッド型のゲームを作る場合unityのシステムを
完全無視で独自のシステムを構築しないといけない
そこが初心者にはかえってややこしくなる unityのチュートリアルでブロック崩しがあるし
手順踏めばテトリス風のも普通に作れるべよ >>51
別に物理一切無視して描画使うだけだから構わんと思うが >>53
ブロック崩しはボールというオブジェクトがアナログな速度で動き
ブロックや壁や自機バーというオブジェクトにインタラクトするという
unityらしさを一切邪魔しないアナログなゲームなんだよ
一方テトリスは完全デジタルなunityらしくないゲームジャンル
当然unityでも作れるけどunityを使う意味は薄い >>54
当然できるけど
unityを使う意味はほとんどない Cのコンパイラの環境整えるって事を考えると
unity一発で済むから楽ねってのはあるw
それならUE4でもXenkoでもいいじゃんってなるが unityは俺も使ってるし非常にいいエンジンだよ?
でもオブジェクト同士の連絡とか初心者泣かせの要素もあるし
テトリス作る為と言われればそれは合わないとしか言いようがない せっかくの良スレがクソコテのせいでクソ化する良い例 >>60
俺はmacを使ってる
windowsも持ってるけどそっちは今はあまり使ってない >>62
やっぱプログラマーはMacなのか
どのMacにしてるの?デスクトップ?ノート? >>64
これ最後な
俺が使ってるのはmacminiの2010年バージョン
そろそろ新しいのが欲しいのだがアップルにmacminiを見捨てられて
困っている @echo off
cls & echo; & echo □□□□ & timeout 1 > null
cls & echo; & echo □□□□ □□□□ & timeout 1 > null
cls & echo □□ & echo □□□□□□□□□□ & timeout 1 > null
cls & echo; &echo □□ CUIでいいなら5時間で作れるぞ。
ただし、ベターCだがな。 gccインストールの所から1時間で作るやつ → sm8517855
おまけ sm27196875 >>1
dvdflickのソースを見れ
どこにテトリスの部分があるのかしらんけどw と思ったらちゃんとファイル名にテトリスって付いてたわ
あとスレタイ読んで無かったw
C言語か そのうちC言語でテトリスなんて小学生の宿題が出る時代が来るのか
デジタルディバイドを感じるようになるぞ >>79
どうせ失敗するだろ
日本は永久にIT後進国だから 9 自分:デフォルトの名無しさん[sage] 投稿日:2017/05/08(月) 21:39:28.12 ID:tJDemEgX [1/2]
○○言語でテトリス作ったとかあるけど、
舐めてんのか?って思う。
あんな単純な数式で回転のルールを実現できるわけがないだろう
ワールドルールぐらい採用してから言え
http://www13.plala.or.jp/TETRiS_TGM/kouza/1.htm
10 自分:デフォルトの名無しさん[sage] 投稿日:2017/05/08(月) 21:43:02.13 ID:tJDemEgX [2/2]
固定時間も重要だし、あと回転入れとか壁蹴りと飛ばしとか渡しとか与作とか
http://www13.plala.or.jp/TETRiS_TGM/kouza/8.htm
http://www13.plala.or.jp/TETRiS_TGM/kouza/9.htm
http://www13.plala.or.jp/TETRiS_TGM/kouza/12.htm >>31
> テトリスを自分で作る場合一番難しいのはTスピンの挙動だろうな
アホか。あんなの単純な計算で求められるわ。
壁蹴りとか陰謀とかもっと難しいのあるだろ >>1
http://ideone.com/A234yq
C++。
腕試しのつもりで作ってみたけど、なんだかんだで8時間かかってしまった。
ワールドルールとかおいしいんか?
全然最適化してないからオセーよ。普通のPCなら普通に動くと思うけど。
なおGPLな。 >>87
おお
これがテトリスのコードか
ざっと見て気になったんだが112行目と122行目で全く同じ処理を繰り返してるのには
どういう意味があるのかな? >>88
そこ2パスにしたのは1パスだと抜けがあるからだよ。
ダサいコードだ。 >>89
それ実行して抜けがあったの?
俺の見た所「B」のsizeをフルにチェックしてるから抜けなんてなさそうだけど >>90
四角の中の絵を切り取ってるんだけど、1パスだと3*2が2*2になる絵があって適当にパッチした次第。 >>91
二重にして何か変わるのかな?
俺の見方では全く変わらない
よくわからない 理屈を説明するのはめんどくさいな。
1パスだとYかXの値が少し奥にあってだからWとHの値がおかしくて、それを補正してるのかなぁ? >>87
俺もわかった
要するに1回目ではXに最小値が入らないからWに最大値が入らないんだよ
これはダメだよーw
W = std::max(j - X, W);
この行をシンプルに
W = std::max(j, W);
こうして後から
W=W-X
とかした方がいいんじゃないの? >>87
これ実行出来ないんだけどどういう環境が要るの? >>97
ああGPLが要るのか
ちゃんと読んで無かったわ
ありがとう あれ?GPLってなんなんだ?
ググっても出て来ないぞ😭 テトリスの中級者以上じゃないと
テトリス作れないと思うw
by ぷよテト人鯖カンスト >>102
今でも使われてるテトリスエンジン組み上げた人は何を隠そう一番社内でテトリスが下手っぴだった
とは聞いてる >>103
c以上に人に寄せても遅いし、マシンに寄せても大変だしって所である種の妥協点だから >>87
動かすにはMSのビジュアルスタジオ2017あればいいよ。
コミュニティは個人開発者無料だから。
GPLはライセンス。
>>96
ねてた。寝たら忘れた。
まあ、ダサいコードなので各自修正。 3DSでBASICが組めるってソフトでぷよぷよ作ったんだが
オブジェクト指向っていうのをマスターすればBASICよりずっと簡単に組めたりするのか? >>97
visualstadio2017 + windows10 th2
要するにC++14環境がいる。
最初の方のおまじないコメントアウトでほかのOSでも動くと思うけどね。
エスケープシーケンス対応してれば。あと、conio.hは入ってない環境もある。 >>110
設計は余計めんどくさい。
コード量は減るかもしれんけどね。
ヘタなOOは見通し悪くなるから、経験が必要。 落ち物パズルって落ちてくるブロックの種類って法則性あるの? オブジェクト指向って、
乱暴に言ったらinputとoutputがついただけのサブルーチンだろ
いちいち似たようなものを組むより簡単になると思うが >>113
制作者が懇意にいじってることはよくある。
ピンチになったらテトリス棒が出るとか。 OOって、たとえば人間を設計したら、それに人間ってラベルを付けて人間って呼べるようになるよ。
って程度だよ。
例えば、間接がどれくらい曲がってるかなどの変数を持ってるけど、使用者には関係ない。 >>113
最近のテトリスなら7種類のテトリミノが1セットでランダムな順番で引いてまた次の7種1セットをランダムに引くはず
ぷよぷよなら2手3色と128手で色バランスが均等なはず >>113
>>119
ぷよぷよは初手2手3色ってことね >>110
プチコンではオブジェクト指向はやりにくい
プチコンではゲームで使うものは配列で管理するよね
x座標、y座標とかそれぞれ配列を作って添え字で管理する
その添え字で管理するってのが不自由だと感じなかったかい?
例えばぷよぷよならぷよ一個一個にxとかyとかパラメータとして付けれたら
直接使えて便利なのに、と
それがオブジェクト指向のクラスの基本的な考え方
クラスに自由にxとかyとか形や色といったパラメータの入った箱をつけれる
更にぷよぷよなら「そのぷよが繋がる」「消える」といった「動作」もぷよ一個一個に付けれる
クラスが作れる言語ならそれが容易くできる GPLで困ってる子がいるので簡単に説明すると
・ソースコードを無料で配る時なんかに「ソースをコピーしても良いけどオレのルールに従ってね」って時にいちいちルールを考えるのは面倒臭い
・で「よくあるルール」ってのがあって(ライセンスと言う)、そのうちの一つがGPL
・GPLがどんなルールかというと「コピーOK、改造OK、売るのもOK。ただし、改造したソースにもGPLライセンスを付けろ」
・つまり>>87の「なおGPL」ってのは、テトリスを勝手にコピーして改造して有料配布するのはOKってこと。ただしその場合、改造したテトリスもGPLが付くので、コピー化、改造化にする必要がある
・これが過去に問題になった例で有名なのがPS2のICOで、中にGPLの物がコピーされていたので、ICOのソースコードを公開する必要が発生し、結局は発売中止になった ぷよは積んであるやつスライドさせるのがめんどくさい。
そんなに難しい処理でもないんだけど、めんどくさい。 ミニMZ-80でアセンブラ組みやってこそプロ(´・ω・`) http://ideone.com/NCEiEG
C++。ぷよみたいなもの。バグあるかも。
テトリス改造してぷよ作ってみた。構造ほとんど同じなので読むのは楽かも。
なおGPL。
動かしたかったら、MSのサイトからVS2017落してきてC++でコンパイル。
俺、その環境で作ってるから。 >>122
じゃあそのクラスの仕組みを作ればいいんじゃね? >>131
C言語なら、構造体で似たようなことはできるけど、完全な隠ぺいができないので不安定。 >>131
前調べたらプチコンで頑張ってクラスを作ってる人もいるらしかった
c言語も腕の立つ人はクラスのようなコードを昔から書いてたらしい
書籍でもそういうようなものが出ている
https://www.amazon.co.jp/dp/4798121134/ >>133
隠蔽と安定性ってどんな関係があんの?見えてたら何がマズいの?見えてても分かってる人なら弄くったりしないんじゃないの? >>135
オブジェクト指向ってのは一言で言うと「責任の所在をはっきりさせる事」
このオブジェクトはここからここまでを請け負う、その処理がしたければ
そのオブジェクトに外部からメッセージを送る、みたいなの
その仕組みを達成する重大な概念として「隠蔽」というものがある
隠蔽のお陰でそのオブジェクトの力が及ぶ範囲を限定できる
まぁ主に多人数開発向けの仕組みなのはお前が考えている通り >>135
OO使うような規模だとわかってる人100%っていうのは幻想だからなぁ。 >>136
じゃあ個人で作ってるのにオブジェクト指向に拘ってるやつが居たとしたら
仕様の性にして自分の無力さを誤摩化してるウンコとか
根本的な仕組みを理解しようとしないで格好に拘ってるだけのサイコ野郎か >>138
個人でオブジェクト指向をやる意義
少なくとも俺は知らない
クラスはコードをわかりやすくするけどそれくらいかな 個人でクラス書くのはパーツ化するくらいしかメリット無いと思う。 ゲーム作ってて終盤に差し掛かった時いつも感じるのは「修正するのマンドクセ」
っていうの
コードがあっちゃこっちゃに点在してると修正するのに一苦労になる
だからオブジェクト指向でクラスごとの共通機能をまとめて設計してたら
修正を極力少なくできる あと、クラス化したいのは並列化したい時とかもかな。
テトリス1個うまく作って作って数並列で実行するとか変態なことができる。
ニッチだけど。
俺のぷよとテトリスを並列実行するときもクラス化してあるほうが扱いやすいと思う。
まぁ、そのように書かないといけないけど。 言語の仕様をゲハみたいにディスりあってるプログラマーって居たりすんのかな
あの言語はこういう書き方しないといけないから嫌い!無くなっちまえ、とか
アルゴリズム理解してたら普通は仕様の違いをディスる前に差異を吸収するようなコード書いたり設計したりするよな
あと、この言語ならこんなに短く書けるとか言うやついるけど
じゃあ何で自分でもっと便利な言語作ろうとしないんだろ >>103
C覚えれば後はどの言語も大体わかるようになる。 ゲーム開発拠点福岡スレでなぜかこっちの書き込みの
レスして暴れてる奴をひきとってくれ >>145
ドロップアウトした奴らはそらそうでしょ
>>1みたく向上心ありそうな奴でって話
>>146
何で?
ポインタでデータ管理もプログラマーが意識してやんないといけないから?
でもチューリングマシンの構造から覚えれば別にC言語関係なくね?
>>147
じゃあリンクくらい貼りなよ >>130
ふと、思いついたけど、オジャマの処理入れてなかった。Orz ■ このスレッドは過去ログ倉庫に格納されています