C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[12]: スロットマシンを作ってみましたが


(過去ログ 32 を表示中)

[トピック内 26 記事 (1 - 20 表示)]  << 0 | 1 >>

■15623 / inTopicNo.1)  スロットマシンを作ってみましたが
  
□投稿者/ seven (14回)-(2008/03/17(Mon) 14:49:15)

分類:[C#] 

3つの絵柄を半分ずつずらして、停止ボタンをおしたときには絵柄のきりの良い状態で止めることが
できるように作ってみました。   
しかし、プログラムがスマートではないように感じています。

できれば描画用の関数を作って同じようなプログラムは作ってみたいのですが、
もしできる方がいらっしゃいましたらご指導おねがいします。
VC#2005


 
        int ps;//ドラムの位置
        int s = 0;//ドラムのデータ(imageList1に5つの画像)
        bool stop;//停止ボタンを押したときのフラグ
        
        private void Form1_Load(object sender, EventArgs e)//起動時の処理
        {
            pictureBox1.Image = new Bitmap(80,240);
            
            ps = 0;

        }

        private void button1_Click(object sender, EventArgs e)//開始ボタン
        {
            stop = false;
            timer1.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)//タイマー処理
        {
            int i;
            Graphics g = Graphics.FromImage(pictureBox1.Image);
            ps = 1 - ps;
            if (ps == 0)//ドラムのきりがよいとき
            {
                for (i = 0; i < 3; i++)
                {

                    g.DrawImage(imageList1.Images[s], 0, 160 - i * 80);
                    s = (s + 1) % 4;

                }
            }


            else//ドラムが半分ずれた状態
            {
                for (i = 0; i < 4; i++)
                {
                    g.DrawImage(imageList1.Images[s], 0, 200 - i * 80);
                    s = (s + 1) % 4;

                }
                if (stop)//停止ボタンが押されていたら止める
                {
                    for (i = 0; i < 3; i++)
                    {
                        g.DrawImage(imageList1.Images[s], 0, 160 - i * 80);
                        s = (s + 1) % 4;
                        timer1.Enabled = false;
                    }
                }

                g.Dispose();
                pictureBox1.Invalidate();
            }
        }


        private void button2_Click(object sender, EventArgs e)//停止ボタン
        {
            stop = true;
        }
        }
    }



引用返信 編集キー/
■15645 / inTopicNo.2)  Re[1]: スロットマシンを作ってみましたが
□投稿者/ Tom Yama (40回)-(2008/03/17(Mon) 17:56:09)
No15623 (seven さん) に返信
> できれば描画用の関数を作って同じようなプログラムは作ってみたいのですが、
> もしできる方がいらっしゃいましたらご指導おねがいします。
その描画用の関数とやらを、まずは自力で作ってみようという気はないのですか?
# 正直、何が聞きたいのか、さっぱりわからん。
引用返信 編集キー/
■15649 / inTopicNo.3)  Re[2]: スロットマシンを作ってみましたが
□投稿者/ seven (15回)-(2008/03/17(Mon) 19:37:57)
No15645 (Tom Yama さん) に返信

> その描画用の関数とやらを、まずは自力で作ってみようという気はないのですか?
> # 正直、何が聞きたいのか、さっぱりわからん。

質問の仕方が悪くてすみません。
いちおう動くには動いたのですが、もっとスマートできれいなコードを書きたいと思っ
質問しました。
それで関数の作り方がピンとこないものですから。
引用返信 編集キー/
■15651 / inTopicNo.4)  Re[3]: スロットマシンを作ってみましたが
□投稿者/ Tom Yama (41回)-(2008/03/17(Mon) 19:52:17)
No15649 (seven さん) に返信
> それで関数の作り方がピンとこないものですから。
だから、まず自力で作ってみてください。
その上で、わからないことを、「具体的に」質問してください。
引用返信 編集キー/
■15655 / inTopicNo.5)  Re[4]: スロットマシンを作ってみましたが
□投稿者/ seven (16回)-(2008/03/17(Mon) 20:47:43)
No15651 (Tom Yama さん) に返信
> ■No15649 (seven さん) に返信
>>それで関数の作り方がピンとこないものですから。
> だから、まず自力で作ってみてください。
> その上で、わからないことを、「具体的に」質問してください。
わかりました。こちらの掲示板への質問は撤回します。
解決済み
引用返信 編集キー/
■15662 / inTopicNo.6)  Re[5]: スロットマシンを作ってみましたが
□投稿者/ myugaru (50回)-(2008/03/18(Tue) 00:20:45)
myugaru さんの Web サイト
2008/03/18(Tue) 01:24:09 編集(投稿者)

No15655 (seven さん) に返信

なんかネトゲの初心者の質問みたいだ。
「どうやったらレベルがあがりますか?」
「どうやったら効率よく狩できますか?」

ちなみに私はあるネトゲでギルドマスターを3年くらいやってます。
ギルドメンバーは現在80人弱います。
最初はひとりっきりで色々しんどかった。
でも仲間が増えてなんでも解決できるようになった。
コミュニティで質問したら叩かれるようなことも
仲間内ならなんでも聞ける。

ネトゲのコミュニティで
「どうやったら〜」
という質問者には同じようにいいます。
まず友達を作ろう!
学校で友達とかいるんでしょう?
まずはネットで仲間を作る。
話はそれからだ。

一応解決マークはつけとく。

続き

下の投稿の「ま」さんはなかなかするどいと思う。
さっきは確かに常連ぶって見えたかも知れない。
その部分で返されたのが非常に残念で自分としても悔しい。
もっと色々考えて発言しないといけないね。

ま さんへ
ぜひ今後もこの掲示板を潤してあげてほしいです。
私も負けないようにがんばります。
サンプルもし良かったらアップしてください。
私の発言で気に入らなかったところとかあれば、
いつでも突っ込んでください。
どうぞよろしくお願いします。

解決済み
引用返信 編集キー/
■15664 / inTopicNo.7)  Re[6]: スロットマシンを作ってみましたが
□投稿者/ ま (1回)-(2008/03/18(Tue) 01:14:16)
2008/03/18(Tue) 01:17:00 編集(投稿者)
2008/03/18(Tue) 01:15:23 編集(投稿者)

うーむ。
既に終わってる・・・

もう見に来ないか。。。。。

Formポストできない環境に居るから帰ってから書き込むか、と考えていたところだったが。。。

サンプルまで作ったのに・・・・

TomYamaさん、文句たれるなら書き込まないでよ。

質問の意味は俺には十分理解できたけどな。

myugaru さん、3年やってるギルマスお疲れさん。だから何?

>>常連ぶって初書き込みの奴に畳み掛けてどうすんのよ、
訂正:初じゃないのね、でも、seven って奴は覚えているよ、以前どんな書き込みしたのか
までは覚えていないけど。

はぁぁ。




解決済み
引用返信 編集キー/
■15666 / inTopicNo.8)  Re[3]: スロットマシンを作ってみましたが
□投稿者/ 倉田 有大 (154回)-(2008/03/18(Tue) 01:54:23)
No15649 (seven さん) に返信
> ■No15645 (Tom Yama さん) に返信
>
>>その描画用の関数とやらを、まずは自力で作ってみようという気はないのですか?
>># 正直、何が聞きたいのか、さっぱりわからん。
>
> 質問の仕方が悪くてすみません。
> いちおう動くには動いたのですが、もっとスマートできれいなコードを書きたいと思っ
> 質問しました。
> それで関数の作り方がピンとこないものですから。

timerの中をそのままメソッドにしちゃだめ?
後、美しくかきたいと、質問してるのかな。
STOPボタンをおすと描画する処理ですが、ここマシンの処理速度によって表示すろタイミングかわりません?

解決済み
引用返信 編集キー/
■15668 / inTopicNo.9)  Re[4]: スロットマシンを作ってみましたが
□投稿者/ myugaru (51回)-(2008/03/18(Tue) 02:41:05)
myugaru さんの Web サイト
No15666 (倉田 有大 さん) に返信
> STOPボタンをおすと描画する処理ですが、ここマシンの処理速度によって表示すろタイミングかわりません?

timerコンポーネントをチョイスされているという事から想像すると、
あまりそれは気にしてないように思うけど。どうかなあ?
ま さんの素晴らしいサンプル待ちですな(笑

解決済み
引用返信 編集キー/
■15672 / inTopicNo.10)  Re[5]: スロットマシンを作ってみましたが
□投稿者/ Ruku (13回)-(2008/03/18(Tue) 08:36:32)
2008/03/18(Tue) 10:07:31 編集(投稿者)

一応、リンクしておきましょうか。

http://dobon.qp.land.to/bbs/cbbs.cgi?mode=al2&namber=760&rev=&no=0

# 解決済みを外してしまっていた…
解決済み
引用返信 編集キー/
■15680 / inTopicNo.11)  Re[7]: スロットマシンを作ってみましたが
□投稿者/ Tom Yama (42回)-(2008/03/18(Tue) 11:12:01)
No15645 (Tom Yama さん) に返信
> # 正直、何が聞きたいのか、さっぱりわからん。
No15664 (ま さん) に返信
> TomYamaさん、文句たれるなら書き込まないでよ。

はい。腹立ち紛れに、心にもないことを言ってしまいました。

seven さん、ごめんなさい。

解決済み
引用返信 編集キー/
■15696 / inTopicNo.12)  Re[8]: スロットマシンを作ってみましたが
□投稿者/ seven (17回)-(2008/03/18(Tue) 19:45:40)
No15680 (Tom Yama さん) に返信
> はい。腹立ち紛れに、心にもないことを言ってしまいました。
> seven さん、ごめんなさい。
いえいえ私のほうこそ聞き方が悪かったと反省しております。
これからは適切な言葉を選んで慎重に質問したいと思います。
いろいろとおしえてくださいね。(^o^)

引用返信 編集キー/
■15698 / inTopicNo.13)  Re[1]: スロットマシンを作ってみましたが
□投稿者/ Jitta (458回)-(2008/03/18(Tue) 21:47:29)
Jitta さんの Web サイト
No15623 (seven さん) に返信
>         int ps;//ドラムの位置
(snip)
>         private void timer1_Tick(object sender, EventArgs e)//タイマー処理
>         {
>             int i;
>             Graphics g = Graphics.FromImage(pictureBox1.Image);
>             ps = 1 - ps;
>             if (ps == 0)//ドラムのきりがよいとき

とっても不思議なのですが、なぜ「ps = 1 - ps;」なのでしょう?
かつ、ps をリセットするときが無いような?

引用返信 編集キー/
■15699 / inTopicNo.14)  Re[2]: スロットマシンを作ってみましたが
□投稿者/ Ruku (14回)-(2008/03/18(Tue) 22:13:05)
> とっても不思議なのですが、なぜ「ps = 1 - ps;」なのでしょう?
> かつ、ps をリセットするときが無いような?

タイマのイベント毎に 0 と 1 に入れ替わっているようです。
それでズレているかどうかの判定としているもよう。他で使っている形跡はありませんね。
引用返信 編集キー/
■15738 / inTopicNo.15)  Re[3]: スロットマシンを作ってみましたが
□投稿者/ Jitta on the way (60回)-(2008/03/19(Wed) 18:36:47)
2008/03/19(Wed) 18:41:19 編集(投稿者)

No15699 (Ruku さん) に返信
>>とっても不思議なのですが、なぜ「ps = 1 - ps;」なのでしょう?
>>かつ、ps をリセットするときが無いような?
>
> タイマのイベント毎に 0 と 1 に入れ替わっているようです。
> それでズレているかどうかの判定としているもよう。他で使っている形跡はありませんね。


「みた」だけで「読んで」いませんでした。最近、三項演算でやっちゃうからなぁ。見ただけではわかりませんでした。ありがとうございます。


本題
ずれているから、ずれないように表示させよう………を、止めるのだからずれないように表示させよう、とか、ずれていない時に止めよう、と考え直せば、一回の描画ですみますよね。
あと、200とか160も、200-ps*40にすれば、if (ps==0) の判定はいらなくなりますよ。
s の計算は、そこでやっていいのかな?

追加
重要なことを忘れてた。
g は、Dispose しないでください。こいつは、作ったものではなく、間借りしているものです。pictureBox1 が Dispose されるまで、勝手に Dispose してはいけません。
(途中でおちなかった?)
引用返信 編集キー/
■15740 / inTopicNo.16)  Re[4]: スロットマシンを作ってみましたが
□投稿者/ Ruku (15回)-(2008/03/19(Wed) 19:15:23)
> 追加
> 重要なことを忘れてた。
> g は、Dispose しないでください。こいつは、作ったものではなく、間借りしているものです。pictureBox1 が Dispose されるまで、勝手に Dispose してはいけません。
> (途中でおちなかった?)

おや?
この Graphics は自分で生成した Bitmap オブジェクトから作ってますよね。
Graphics.FromImage で取得した場合は Dispose するべきだと思っていたのですが。
私の解釈が間違っているでしょうか…不安です。

# スレ主じゃありませんが、これはちょっと聞いておきたい。
引用返信 編集キー/
■15741 / inTopicNo.17)  Re[4]: スロットマシンを作ってみましたが
□投稿者/ 倉田 有大 (158回)-(2008/03/19(Wed) 19:17:58)
> 「みた」だけで「読んで」いませんでした。最近、三項演算でやっちゃうからなぁ。見ただけではわかりませんでした。ありがとうございます。

僕も三項演算つかいますね。見やすいし。

> 追加
> 重要なことを忘れてた。
> g は、Dispose しないでください。こいつは、作ったものではなく、間借りしているものです。pictureBox1 が Dispose されるまで、勝手に Dispose してはいけません。
> (途中でおちなかった?)

あれ、PictureBoxのOnPaintイベントでもらうgはDisposeしてはいけないと思いますが、
この場合はDisposeしちゃだめなんですか?
引用返信 編集キー/
■15745 / inTopicNo.18)  Re[5]: スロットマシンを作ってみましたが
□投稿者/ Jitta on the way (61回)-(2008/03/19(Wed) 21:36:29)
No15740 (Ruku さん) に返信
> この Graphics は自分で生成した Bitmap オブジェクトから作ってますよね。
> Graphics.FromImage で取得した場合は Dispose するべきだと思っていたのですが。
> 私の解釈が間違っているでしょうか…不安です。
>
> # スレ主じゃありませんが、これはちょっと聞いておきたい。


ん〜?
自分で作っているのは、Load イベントですよね?で、Image プロパティに、他のものを代入していないと思いますが、違ってます?

あれ?FromImage メソッドの挙動を誤解しているかな?これ、新しい Graphics オブジェクトなのかな?


家に着いたら調べます。
引用返信 編集キー/
■15746 / inTopicNo.19)  Re[6]: スロットマシンを作ってみましたが
□投稿者/ Jitta on the way (62回)-(2008/03/19(Wed) 21:43:37)
No15745 (Jitta on the way さん) に返信

http://msdn2.microsoft.com/ja-jp/library/system.drawing.graphics.fromimage(VS.80).aspx
> 指定した Image の新しい Graphics を作成します。

新しい Graphics と書いてありますね。失礼しました。Dispose が必要です。
(携帯でみると、メニューが悲惨なことにw)
引用返信 編集キー/
■15750 / inTopicNo.20)  Re[7]: スロットマシンを作ってみましたが
 
□投稿者/ y4yama (60回)-(2008/03/20(Thu) 08:20:59)
一段落されたようで・・・
えぇ〜と、ドラムは段々遅くなって、遂にはあるimageList1の4つの画像のどれかの中心で止まる・・・
という動きは不要なのでしょうか。Timerは一定間隔でも、Y方向のずれの値を変化させれば実現可能ですが・・・
コードはif (ps == 0)//とelseの2つに分けなくていいし、キレイになりそうです
sevenさん、気楽に会話をしましょうヨ (もう見てられないかなぁ?)
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -