テトリス出来ました

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
こめかみ

テトリス出来ました

#1

投稿記事 by こめかみ » 16年前

ほぼ某サイトのソースコードの写経なのですが。
大体の形になったら満足してしまいました。
それと同時に、
以前遊ばせていただいたバグさんの作りこみっぷりに深いテトリス愛を感じる今日この頃です。

<操作方法>
実行するといきなり始まります。

zキーで←(左)

cキーで→(右)

xキーで高速落下

スペースキーで右回転(一方通行)


空に落ちるって新しくないかな?

いかがでしょうか。

こめかみ

Re:テトリス出来ました

#2

投稿記事 by こめかみ » 16年前

奇を衒うのはやめました。
一晩寝たら我にかえりました。
ずいぶん血迷ってたと思います。
伊呂波とか見にくいですし、
予告無く新しい(変な)ことやっても普通は反応しづらいですね。

なので通常版です。

CUIに色をつけるのが思いのほかうまくいった以外は普通以下のテトリスですが。

よかったら遊んでみてください。

バグ

Re:テトリス出来ました

#3

投稿記事 by バグ » 16年前

遊んでみました。

画面がちらつくのが少し気になります。
これは毎回すべて描き直しているんでしょうか?
GUIアプリならばその方法でいいのですが、CUIの場合は毎回描きなおしているとどうしてもちらついてしまいますので、変更のあった箇所だけを描きなおすとちらつきが最小限で抑えることができます。

あとは、NEXTブロックの表示やスコア表示なんかがあれば、とりあえず完成ですね(^-^)

あ、それから、個人的にソースを拝見したいです。(^_^;)

kazuoni

Re:テトリス出来ました

#4

投稿記事 by kazuoni » 16年前

自分も今作っているノベルが完成次第テトリス制作
やってみようかと思いましたが・・・
やっぱり難しいんでしょうか^^;
機能的には前回のバグさんのテトリスに
少し手を加えて、
ポイントがある一定になったらアビリティが使える
(例えば保留が数分間使えないとか、次の形が見えないとか、バーがでなくなるとか・・・)
ようにしようとしていたのですが・・・
敷居がたかいですかね^^;

あ、テトリス遊ばさせていただきましたー^^
制作お疲れ様です^^

バグ

Re:テトリス出来ました

#5

投稿記事 by バグ » 16年前

最低限の実装ならば、テトリスはそんなに難しくはないと思いますよ(^-^)

こめかみ

Re:テトリス出来ました

#6

投稿記事 by こめかみ » 16年前

バグさんkazuoniさんありがとうございます。

NEXTブロックの表示やスコア表示なんかをつけて、とりあえず完成しました\(^o^) /


>>やっぱり難しいんでしょうか^^;

テトリスの作り方はここで勉強しました。
http://www.nhk.or.tv/kow/program/index.php

とても丁寧な解説があるので誰でもこれと同じものが作れると思いますよ。
作れるだけでもすごいのに解説の余力がある人はホント神様です。


>>これは毎回すべて描き直しているんでしょうか?

はい。windows.hの関数でsystem("cls")というので丸ごと消して再描画してます。

>>GUIアプリならばその方法でいいのですが、CUIの場合は毎回描きなおしているとどうしてもちらついてしまい
>>ますので、変更のあった箇所だけを描きなおすとちらつきが最小限で抑えることができます。

理屈はわかりましたが方法がさっぱり思いつきません。
実装するかはわかりませんが、参考までに教えていただけますか?
味を占めたので今度CUIパズルゲームを作るときに役に立つかも。
次作るとしたらヨッシーのクッキーとかそのへんかなー
先にシューティング作りたいのでいつになるやらです。


>>あ、それから、個人的にソースを拝見したいです。(^_^;)

添付しましたどうぞ!
conioヘッダのcprintf()が標準関数では無いので
BCCじゃないとコンパイルできないかと思いますが大丈夫ですかね?

こめかみ

Re:テトリス出来ました

#7

投稿記事 by こめかみ » 16年前

添付忘れた\(^o^) /

TOMONORI

Re:テトリス出来ました

#8

投稿記事 by TOMONORI » 16年前

こんにちは、テトリス面白いですね。遊ばせてもらいました。
自分の作ったものがゲームとして遊べるって言うのは感動ですよね!
自分もむか~しN88BASICでゲームを作ったときには感動しました。当時も画面のちらつき
というのは厄介なもので、ベーマガのスクリーン命令を用いた紙芝居を見たときは興奮しました。
やり方はよーするに表示画面の裏に次に表示する画面を描写しておき、画面の切り替えをもって
描画とみなします。Cでも同じ方法でできるので、主のサイトを見るといいかもです。

ttp://l.huu.cc/g/#13

新しいのができたらまた遊ばせてください。楽しみにしてます。

こめかみ

Re:テトリス出来ました

#9

投稿記事 by こめかみ » 16年前

○もっと色を明るくしました

お?、ニアミスですね
TOMONORIさんこんにちは


感動ですか。感動ですね。感動ですとも。常時感動しっぱなしで麻痺してます。
去年ゲームプログラムの練習始めたころなんて
画像が動くたんびにニヤニヤしたり変な笑いがこみ上げてきたり大変でしたので、
大変ありがたい麻痺なのですが。

ニヤニヤは今でもしてます。


N88BASICってファミコンでプログラムできるって奴ですかね。知識でしか知りませんが。
私ももっと子供のころから始めたかったですよ。
ゲームボーイでもプログラミングが出来たなら!もっと早く始められたのかもしれないです。
PC98であそばせてもらってもいたのでそういうものの存在さえ知ってればチャンスはあったのかもしれないですけどね。まあなんというか人生めぐり合わせですホントに。


裏画面処理ってCUIでもできるんですかね。もっと調べてみます。

こめかみ

Re:テトリス出来ました

#10

投稿記事 by こめかみ » 16年前

N88BASICって普通にパソコンですね^^;

NってつくからてっきりNintendoかとおもいました;
調べたらファミリーベーシックはNS-Hu BASICですね。(当たらずとも遠からず?)

バグ

Re:テトリス出来ました

#11

投稿記事 by バグ » 16年前

N88-BASICのNはNECのことじゃなかったかなぁ…?
ちなみにファミリーベーシックをメインで開発したのはハドソンだったかと…Huというのがハドソンの頭文字ですね。

えっと、ソースをざっとですが拝見しました。なるほど、こういうやりかたもあるんですね。
私はWINAPIのコンソールウインドウ制御用の関数を使用した独自のクラスを作成しているので、こめかみさんの方法では、私が言った方法を実装するのはちょっと面倒かもしれません(^_^;)

一応、私の作成したコンソールウインドウ制御用クラスを添付してみますね。
ウインドウのサイズ変更や、テキストや背景の色の変更、テキスト表示の位置変更、画面全体の消去などなどが簡単に行えるようにしてあります。

本当は自分のホームページにリファレンス付きで掲載したいんですが、面倒になって途中で挫折してしまいます(苦笑)

こめかみ

Re:テトリス出来ました

#12

投稿記事 by こめかみ » 16年前

遅くなりました。

独自のクラスですか。
クラスはまだ理解が曖昧な領域ですが少し練習してみます。
iostreamもテンプレートって奴ですかね。
C++はまだ全然わからないです。

わからなかったら質問しに来ますのでその時はよろしくお願いします。

投げ出す可能性の方が高そうですけど・・・


>>えっと、ソースをざっとですが拝見しました。なるほど、こういうやりかたもあるんですね。

何か目新しい方法がありましたか?
バグさんがテトリスを作る流れを聞いてみたいです。
あ、以前聞いたんでしたっけ。

>>本当は自分のホームページにリファレンス付きで掲載したいんですが

リファレンス楽しみにしております。
できればDXライブラリみたいにサンプルプログラムつきで。
勘のいい上級者さんたちは関数の単語見ただけで使いこなせるんでしょうね。すごいですね。



このクラスならBCC以外でも文字の色が簡単に変えられたり、
裏画面処理とかできるんですかね。
バグさんの仰る感じではちらつきが起きるのは逃れ得ないような風に思えますが。

CUIでRPG作る人とかいるし可能な筈なんですよね。
うーむ。
まあ思いつかなかったら
あんまり悩まないで諦めときます今回はw

CUIでシューテング作れるって言うんなら追求してみようかとも思いますが、
文字列じゃ斜めの弾はどうしても不自然になりましたからw

こめかみ

Re:テトリス出来ました

#13

投稿記事 by こめかみ » 16年前

フォアグラウンドとバックグラウンドテキストってのがあるのですか。
バグさんのクラスに頼らずともできるかもしれないですね、裏画面処理。
今日から二日少し慌しいので明後日あたり挑戦してみます。

バグ

Re:テトリス出来ました

#14

投稿記事 by バグ » 16年前

コンソールアプリに関しては裏画面という概念は無いと思うんですが…

こめかみ

Re:テトリス出来ました

#15

投稿記事 by こめかみ » 16年前

勘違いでした;

こめかみ

Re:テトリス出来ました

#16

投稿記事 by こめかみ » 16年前

あれ?やはり無いんですか。
バックグラウンドテキストは背景色の設定?のようですね。裏に文字を描画するものかと思いました。

バグ

Re:テトリス出来ました

#17

投稿記事 by バグ » 16年前

>>バグさんの仰る感じではちらつきが起きるのは逃れ得ないような風に思えますが。

必要な部分だけを書き換えるという方法で、限りなく気にならない程度に抑える事はできます。
SetCursorPosition関数で、カーソル位置を移動させて、そこに文字を表示してやれば、描画毎にsystem("cls")を実行する必要がなくなります。


えっと、コンソールクラスのサンプルソース(手抜きでごめんなさい)で、画像は実行結果です。
SetForegroundColor関数は文字の色を設定します。
SetBackgroundColor関数は文字の背景の色を設定します。
include "Console.h"
#include <stdio.h>

void main(void)
{
    CConsole console;

    console.SetForegroundColor(COLOR_BLUE);
    printf("文字に色がつきました\n");

    console.SetBackgroundColor(COLOR_GREEN);
    printf("背景にも色がつきました\n");
}

バグ

Re:テトリス出来ました

#18

投稿記事 by バグ » 16年前

ちょっと気合入れて作ってみました。
WINAPIを使用したコンソールアプリのテトリスです。
細かいことは説明書.txtに書いておきましたので、そちらを参照ください。
あ、ソースの添付しておきましたんで、汚いソースで読みづらいでしょうが、気になる方はそちらもどうぞ♪

バグ

Re:テトリス出来ました

#19

投稿記事 by バグ » 16年前

いきなりバグを見つけたので、修正版を私のHPにアップしました。m(__)m

こめかみ

Re:テトリス出来ました

#20

投稿記事 by こめかみ » 16年前

( ゜д゜)
(つд⊂)ゴシゴシ
(;゜д゜)

(」゜ロ゜)」おぉ(。ロ。)おぉΣ(゜ロ゜」)」おぉ「(。ロ。「)おぉ~


えーと、先ずはサンプルありがとうございます。


いやーーーーーーーーーーーーーーーーーーーーーーーーーーーーーあ

これがテトリスマスターの本気ですか。
テトリスト?テトリス大師?いずれにせよ異次元ですね、凄過ぎます。

思わずレベル15まで遊んじゃったじゃないですか。
(越えられないレベル15の壁)

00723717点って普通?

畏れ入りました!!



クラスについてですが座標を指定して文字を書くのがCUIでは新鮮ですね。
バグさんのクラスを使って作ったものって公開してもいいんでしょうか?
およそ身内に見せるだけでしょうが。

クラスは中身を理解しないでも使えるんですね。
これならなんとかなりそうかもです。

バグ

Re:テトリス出来ました

#21

投稿記事 by バグ » 16年前

遊んでいただき、ありがとうございます(^-^)

>>思わずレベル15まで遊んじゃったじゃないですか。
>>(越えられないレベル15の壁)

実は私も超えられなかったりします…(苦笑)
一応、レベル99まではGOALポイントが増えていきますが、落下速度に関しては15で頭打ちです。
当初はもっと速かったのですが、まともに遊べる代物ではなかったので、あれでも少し遅くしてあります。

>>00723717点って普通?

どうでしょうか?
ちなみに私は1087698点でした。
得点を稼ぐコツは、高レベルでテトリス(4列消し)をたくさん決める事ですね。
スコアの伸びが全然変わってきます。

>>クラスについてですが座標を指定して文字を書くのがCUIでは新鮮ですね。
>>バグさんのクラスを使って作ったものって公開してもいいんでしょうか?
>>およそ身内に見せるだけでしょうが。

全然かまいませんよ(^-^)
こめかみさんの使いやすいようにカスタマイズしていただいてもかまいませんので、ご自由にお使いください。

こめかみ

Re:テトリス出来ました

#22

投稿記事 by こめかみ » 16年前

>>こめかみさんの使いやすいようにカスタマイズしていただいてもかまいませんので、ご自由にお使いください。

ありがとうございます。
多分完成しないでしょうが、
あと一週間ぐらいはちらつきをなくす努力をしてみてだめだったら速やかにシューティング制作に移行します。
メリハリは大事だと思うので予定の変更は最小限に。。。


>>得点を稼ぐコツは、高レベルでテトリス(4列消し)をたくさん決める事ですね。

忘れてました(w
テトリスのテトリスたる由縁ですよね。

閉鎖

“C言語何でも質問掲示板” へ戻る