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

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

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

Re[3]: C#カードゲーム作成中 助けて〜TT


(過去ログ 112 を表示中)

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

■66485 / inTopicNo.1)  C#カードゲーム作成中 助けて〜TT
  
□投稿者/ Cubers (1回)-(2013/04/29(Mon) 09:25:46)

分類:[C#] 

学校のクラブでカードゲームを作っているのですがなぜか配列の順番にカードが表示されません、どなたか助けてください・・・・
ちなみにゲームは次のカードが今のカードより低いか高いかを当てるやつです。

開発環境はC#Express
使用言語はC#です。


コードは以下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;

namespace TestCards
{
    public partial class Form1 : Form
    {
        Cards myCards = new Cards();
        Boolean myDraw = true;
        //Int32 cardCount = 0;
        
        public Form1()
        {
            InitializeComponent();        
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (myDraw)
            {
                Point myPoint = new Point(75, 50);
                //if (cardCount >= 0)
                //{
                    myCards.DrawCard(e, myCards.GetNewCard(), myPoint);
                    //myPoint.X += 105;
                //}
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        private void hButton_Click(object sender, EventArgs e)
        {
            myDraw = true;
            this.Refresh();
            int prevNum = myCards.previousNum();
            int newNum = myCards.GetNewCard();

            if (newNum > prevNum)
            {
                MessageBox.Show(this, "You Win!!");
            }
            else
            {
                MessageBox.Show(this,"You Lose!!");
            }
        }

        private void lButton_Click(object sender, EventArgs e)
        {
            this.Refresh();
            int prevNum = myCards.previousNum() % 12;
            int newNum = myCards.GetNewCard() % 12;
            //int v = x % 12;
            //int z = y % 12;
            if (newNum < prevNum)
            {
                MessageBox.Show(this, "You Win!!");
            }
            else
            {
                MessageBox.Show(this,"You Lose!!");
            }
        }

        public class Cards
        {
            const int width = 79;
            const int height = 123;
            static Random _random = new Random();
            int[] cardArray = new int [52];
            int deckCardNumber;
            int previousCardNumber;

            public Cards()
            {
                deckCardNumber = 0;
                for (int i = 0; i < 52; i++)
                    cardArray[i] = i;
                Shuffle(cardArray);
            }

            public int GetNewCard()
            {
                deckCardNumber++;
                deckCardNumber %= 52;
                return cardArray.ElementAt(deckCardNumber);
            }
            public int previousNum()
            {
                deckCardNumber++;
                deckCardNumber %= 52;
                return cardArray.ElementAt(deckCardNumber-1);
            }
                

            
            //public int nextNum()
            //{
            //    object n = cardArray[1];
            //    return cardArray[1];
            //}

            public void DrawCard(PaintEventArgs e, int cardNumber, Point p)
            {
                // Create a Bitmap object from a file.  
                Bitmap myBitmap = new Bitmap("..//..//cards.png");
                int xOffset = 0; // TBD - Need to handle all cards
                int yOffset = 0;    // TBD - Need to handle all cards

                if ((cardNumber <= 12) && (cardNumber >= 0))
                {
                    xOffset = +cardNumber * width; // TBD - Need to handle all cards
                }
                else if ((cardNumber <= 25) && (cardNumber >= 13))
                {
                    xOffset = +(cardNumber - 13) * width;
                    yOffset = +123;
                }
                else if ((cardNumber <= 38) && (cardNumber >= 26))
                {
                    xOffset = +(cardNumber - 26) * width;
                    yOffset = +246;
                }
                else if ((cardNumber <= 51) && (cardNumber >= 39))
                {
                    xOffset = +(cardNumber - 39) * width;
                    yOffset = +369;
                }
                else if ((cardNumber <= 53) && (cardNumber >= 52))
                {
                    xOffset = +(cardNumber - 52) * width;
                    yOffset = +492;
                }
                else if (cardNumber >= 54)
                {
                    xOffset = +158;
                    yOffset = +492;
                }







                // Clone a portion of the Bitmap object.
                Rectangle cloneRect = new Rectangle(xOffset, yOffset, width, height);
                System.Drawing.Imaging.PixelFormat format = myBitmap.PixelFormat;
                Bitmap cloneBitmap = myBitmap.Clone(cloneRect, format);

                // Draw the cloned portion of the Bitmap object.
                e.Graphics.DrawImage(cloneBitmap, p);
            }

            public static void Shuffle<j>(j[]array)
            {
                var random =  _random;
               
                for (int i = array.Length; i > 1; i--)
                {
                    // Pick random element to swap.
                    int k = random.Next(i);
                    // 0 <= j <= i-1
                    // Swap.
                    j tmp = array[k];
                    array[k] = array[i - 1];
                    array[i - 1] = tmp;
                }
            }
        }
    }
}

引用返信 編集キー/
■66487 / inTopicNo.2)  Re[1]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Azulean (150回)-(2013/04/29(Mon) 10:18:53)
いろいろと突っ込みポイントがありそうですが、丸投げはやめませんか。
あなたの質問では、このコードがどういったものなのか、どのように表示するのか、期待する結果は何でどういった状況にあるのかを明示していませんので、
コードをすべて読んで、あなたの意図をくみ取り、その意図とずれているところを探し出すことが必要で、回答側の労力が大きいためです。


さて、いくつか問題が埋まっていそうな予感はしますが、あまり深く突っ込まず、目先のことだけ書きます。
「Paint イベントでは 1 枚のカードしか描くコードを実装していません。複数のカードを繰り返したいのであればループ(繰り返し)が必要なはずです」

引用返信 編集キー/
■66488 / inTopicNo.3)  Re[2]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Cubers (2回)-(2013/04/29(Mon) 11:29:01)
No66487 (Azulean さん) に返信
> いろいろと突っ込みポイントがありそうですが、丸投げはやめませんか。
> あなたの質問では、このコードがどういったものなのか、どのように表示するのか、期待する結果は何でどういった状況にあるのかを明示していませんので、
> コードをすべて読んで、あなたの意図をくみ取り、その意図とずれているところを探し出すことが必要で、回答側の労力が大きいためです。
>
>
> さて、いくつか問題が埋まっていそうな予感はしますが、あまり深く突っ込まず、目先のことだけ書きます。
> 「Paint イベントでは 1 枚のカードしか描くコードを実装していません。複数のカードを繰り返したいのであればループ(繰り返し)が必要なはずです」
>

すいません、コードがどういう物か書くのを完全に忘れてました・・・
カードの表示方法は切り取り型で一枚の画像から切り取っていく形式です。
この部分はdrawCard()で仕切ってます。
一番下のshuffleは配列のシャッフルです。
ちょくちょく出てくるコメントは、先生に要らないと言われてカットされたコードです。
コードを起動すると一番最初のカードがフォームに置かれます(これもなぜか配列の2番目・・・)。
フォームについてるhButton か lButtonを押すと次のカードが出てくるのですがどうしても次のじゃない配列が出てきます・・・(例・最初に出てくるのが配列[1]で次に出てきたのが配列[8]でした・・・)
現在の問題は上に書いたとおり配列[]を順番に表示できないので、どうすればそれが直るかです。
もしかしたらボタンを押すたびに新しい配列を作っているのかと思い調べましたが、規則的に飛ぶだけでした。(例 1,8,17,26,35,44)
表示されるカードが違う上にprevNumとnewNumがおかしなところから要素を取ってきて良くわからない状況です。
問題点があるとすればCardクラス内だと思うのですが全く分からない状況です。
他に書かなければいけない事があるならば言ってください・・・・

引用返信 編集キー/
■66489 / inTopicNo.4)  Re[3]: C#カードゲーム作成中 助けて〜TT
□投稿者/ とっちゃん (109回)-(2013/04/29(Mon) 13:17:16)
とっちゃん さんの Web サイト
No66488 (Cubers さん) に返信
> コードを起動すると一番最初のカードがフォームに置かれます(これもなぜか配列の2番目・・・)。


> フォームについてるhButton か lButtonを押すと次のカードが出てくるのですがどうしても次のじゃない配列が出てきます・・・(例・最初に出てくるのが配列[1]で次に出てきたのが配列[8]でした・・・)
> 現在の問題は上に書いたとおり配列[]を順番に表示できないので、どうすればそれが直るかです。
> もしかしたらボタンを押すたびに新しい配列を作っているのかと思い調べましたが、規則的に飛ぶだけでした。(例 1,8,17,26,35,44)
> 表示されるカードが違う上にprevNumとnewNumがおかしなところから要素を取ってきて良くわからない状況です。
> 問題点があるとすればCardクラス内だと思うのですが全く分からない状況です。
> 他に書かなければいけない事があるならば言ってください・・・・
>
引用返信 編集キー/
■66490 / inTopicNo.5)  Re[4]: C#カードゲーム作成中 助けて〜TT
□投稿者/ とっちゃん (110回)-(2013/04/29(Mon) 13:18:03)
とっちゃん さんの Web サイト
No66489 (とっちゃん さん) に返信
あれ?送信しちゃった。。。編集キーも付けてないので削除もできんw
上のは無視してくださいなw

引用返信 編集キー/
■66491 / inTopicNo.6)  Re[5]: C#カードゲーム作成中 助けて〜TT
□投稿者/ とっちゃん (111回)-(2013/04/29(Mon) 13:35:19)
とっちゃん さんの Web サイト
No66488 (Cubers さん) に返信

クラブ活動なら、先輩とか顧問の先生に聞いてみたら?と思いますが。。。
いくつか添削もしてもらっているようですし。

> コードを起動すると一番最初のカードがフォームに置かれます(これもなぜか配列の2番目・・・)。
配列の2番目というのはどうやって確認していますか?


> フォームについてるhButton か lButtonを押すと次のカードが出てくるのですがどうしても次のじゃない配列が出てきます・・・(例・最初に出てくるのが配列[1]で次に出てきたのが配列[8]でした・・・)
その配列の番号はどうやって確認しましたか?


> 現在の問題は上に書いたとおり配列[]を順番に表示できないので、どうすればそれが直るかです。
配列を順番に。。。とは?

> もしかしたらボタンを押すたびに新しい配列を作っているのかと思い調べましたが、規則的に飛ぶだけでした。(例 1,8,17,26,35,44)
どうやって調べたのでしょう?

> 表示されるカードが違う上にprevNumとnewNumがおかしなところから要素を取ってきて良くわからない状況です。
おかしなところとは何でしょう?
配列より外に値をとりに行こうとしてしまう?

> 問題点があるとすればCardクラス内だと思うのですが全く分からない状況です。
> 他に書かなければいけない事があるならば言ってください・・・・
>
本当はどういう結果になってほしいのでしょうか?
それが必要です。

最初に画面に表示したときは。。。
1回ボタンを押したら。。。

どういう結果になってほしいか。
そのためにプログラムのどの値をどのように変化させることが意図した結果につながる動きになるのか?
を確認してみましょう。

引用返信 編集キー/
■66492 / inTopicNo.7)  Re[5]: C#カードゲーム作成中 助けて〜TT
□投稿者/ daive (8回)-(2013/04/29(Mon) 14:06:01)
学校での、クラブ活動でアプリを作るのであれば、
ざっと、設計⇒画面、コード作成⇒デバッグ⇒リリース
までを、体験させようとしている筈ですので、
一番楽しい、デバッグを、人任せにするのは、勿体ない。

デバッグ とは
https://www.google.co.jp/search?hl=ja&amp;q=%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%80%80%E3%81%A8%E3%81%AF&amp;lr=lang_ja
'
Visual Studio デバッグ 基礎
https://www.google.co.jp/search?hl=ja&amp;q=Visual+Studio+%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%80%80%E5%9F%BA%E7%A4%8E&amp;lr=lang_ja
'
Visual Studio サンプル
http://code.msdn.microsoft.com/vstudio/
Visual Studio ギャラリー
http://visualstudiogallery.msdn.microsoft.com/
'
ゲームなどは、ギャラリーの方: Starter Kit
今回のコード修正の参考には、ならない筈。
'
OS:不明、Windows xxxxx
開発言語:C#、バージョン不明
開発ツール:不明、Visual Studio xxxxx 、 Edition 不明
.NET Framework:不明、.Net Framework xxx


引用返信 編集キー/
■66493 / inTopicNo.8)  Re[6]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Cubers (3回)-(2013/04/29(Mon) 14:10:52)
確認方法はBREAK POINTを使ったデバッガーで出てくるMYCARD()のARRAY[]を見て確認しました。
スクショが張れると説明が楽なんですが・・・・
現在の所属しているクラブは片田舎の小さいやつなんで人数は3人です。
一番理解できているのは先生ですが一週間に一度しかないので聞くのは難しいです・・・・
先輩は今のところ居ません・・・

片田舎の上に海外なので、C#Expressはもちろん英語です・・・

> 表示されるカードが違う上にprevNumとnewNumがおかしなところから要素を取ってきて良くわからない状況です。

>おかしなところとは何でしょう?
>配列より外に値をとりに行こうとしてしまう?

配列の中の適当なINDEXを拾ってきます・・・

最初の画面表示のとき配列は[0]を返して欲しいのでそういうメソッドを作ると良さそう・・・

ボタンクリックで配列[1]を拾ってきて欲しいので++を使用しましたが、なぜか飛びます。
++でどんどん足すにしても7つも飛ぶのは無いと思います・・・


上にも書いたとおりデバッガを私用してarray[]の値を確認しました。

格カードの切り出しは問題ないと思います。
切り出しは配列[]を基準にしてますから。


引用返信 編集キー/
■66495 / inTopicNo.9)  Re[7]: C#カードゲーム作成中 助けて〜TT
□投稿者/ daive (9回)-(2013/04/29(Mon) 15:27:50)
>片田舎の上に海外なので、C#Expressはもちろん英語です・
とかって、自分を憐れんでいても、始まらない。

DreamSpark
http://msdn.microsoft.com/ja-jp/hh455217.aspx
DreamSpark の一部ルール変更のお知らせ
http://msdn.microsoft.com/ja-jp/dn151285
(対象者、対象教育機関を、拡大)

Microsoft 学生向け応援プログラムです。
(Microsoftによる、学生段階からの囲い込みプログラム)


引用返信 編集キー/
■66496 / inTopicNo.10)  Re[8]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Cubers (4回)-(2013/04/29(Mon) 15:52:35)
No66495 (daive さん) に返信
> >片田舎の上に海外なので、C#Expressはもちろん英語です・
> とかって、自分を憐れんでいても、始まらない。
> ’
> DreamSpark
> http://msdn.microsoft.com/ja-jp/hh455217.aspx
> DreamSpark の一部ルール変更のお知らせ
> http://msdn.microsoft.com/ja-jp/dn151285
> (対象者、対象教育機関を、拡大)
> ’
> Microsoft 学生向け応援プログラムです。
> (Microsoftによる、学生段階からの囲い込みプログラム)
> ’
>
unfortunately this program does not support high school yet, so I can't get help until July...
I hate this environment...
一応登録されてる大学はありましたが。まだ無理そうです・・・
引用返信 編集キー/
■66498 / inTopicNo.11)  Re[9]: C#カードゲーム作成中 助けて〜TT
□投稿者/ とっちゃん (112回)-(2013/04/29(Mon) 17:00:27)
とっちゃん さんの Web サイト
No66496 (Cubers さん) に返信

> unfortunately this program does not support high school yet, so I can't get help until July...
> I hate this environment...
> 一応登録されてる大学はありましたが。まだ無理そうです・・・

Express なら、日本語版でも英語版でも無償で導入できますよ。まぁVS本体よりOSがどこの国のものかのほうが
影響度は高い気がしますが。


引用返信 編集キー/
■66499 / inTopicNo.12)  Re[10]: C#カードゲーム作成中 助けて〜TT
□投稿者/ とっちゃん (113回)-(2013/04/29(Mon) 17:20:56)
とっちゃん さんの Web サイト
No66493 (Cubers さん) に返信
> >おかしなところとは何でしょう?
> >配列より外に値をとりに行こうとしてしまう?
>
> 配列の中の適当なINDEXを拾ってきます・・・
>
> 最初の画面表示のとき配列は[0]を返して欲しいのでそういうメソッドを作ると良さそう・・・
>
そうですね。
画面表示の時は、最初は、配列の[0]部分のカードを表示してくれるのがいいでしょう。

ということは、そういう意図を表現してくれるようにプログラムを作成すればいいと思いますよ。






> ボタンクリックで配列[1]を拾ってきて欲しいので++を使用しましたが、なぜか飛びます。

この「なぜか」を突き止める作業がデバッグ(バグを修正する)作業です。
意図した数値より大きくなるのは「なぜか」?その原因を突き止めましょう。



> ++でどんどん足すにしても7つも飛ぶのは無いと思います・・・
>
++を1回呼ぶと数字が一つ大きくなります。

7大きくなったのだから7回++を呼び出したということになると考えるのが自然でしょう。
逆に言えば、6回余計に++を行っているということになります。
その6回分を探せばいいのではないでしょうか?

>
> 上にも書いたとおりデバッガを私用してarray[]の値を確認しました。
>
ということをデバッガを活用して探し出します。

例えば、++をしている個所すべてにブレークポイントを張って、デバッグ実行し
ボタンを押してみるなど...


頑張ってください。

引用返信 編集キー/
■66500 / inTopicNo.13)  Re[11]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Cubers (5回)-(2013/04/29(Mon) 18:43:40)
No66499 (とっちゃん さん) に返信



> 例えば、++をしている個所すべてにブレークポイントを張って、デバッグ実行し
> ボタンを押してみるなど...
>
>
> 頑張ってください。


クラス内部のGetNewCard()のreturn部分にブレークポイントを置いた結果、何故か勝手にループして一回の動作で4回ぐらい++される謎の現象が起こっていました・・・・
これはどうやって直せばいいんでしょう??
その下のpreviousNum()は問題ないのに何故かこれだけ増えてきます・・・・・
引用返信 編集キー/
■66501 / inTopicNo.14)  Re[12]: C#カードゲーム作成中 助けて〜TT
□投稿者/ とっちゃん (114回)-(2013/04/29(Mon) 19:08:42)
とっちゃん さんの Web サイト
No66500 (Cubers さん) に返信
> クラス内部のGetNewCard()のreturn部分にブレークポイントを置いた結果、何故か勝手にループして一回の動作で4回ぐらい++される謎の現象が起こっていました・・・・
> これはどうやって直せばいいんでしょう??
> その下のpreviousNum()は問題ないのに何故かこれだけ増えてきます・・・・・

ループ? コードの中では、Shuffle()メソッドにループステートメントがあるくらいだと思いますけど?
連続して呼び出されていることをループと呼んでいる?

それともブレークした後1ステップしたら一気に増えた?
もし、そうだとしたら、ウォッチウィンドウに
deckCardNumber++
とか書いていませんか?


引用返信 編集キー/
■66502 / inTopicNo.15)  Re[13]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Cubers (6回)-(2013/04/29(Mon) 19:23:51)
No66501 (とっちゃん さん) に返信
> ■No66500 (Cubers さん) に返信
>>クラス内部のGetNewCard()のreturn部分にブレークポイントを置いた結果、何故か勝手にループして一回の動作で4回ぐらい++される謎の現象が起こっていました・・・・
>>これはどうやって直せばいいんでしょう??
>>その下のpreviousNum()は問題ないのに何故かこれだけ増えてきます・・・・・
>
> ループ? コードの中では、Shuffle()メソッドにループステートメントがあるくらいだと思いますけど?
> 連続して呼び出されていることをループと呼んでいる?
>
> それともブレークした後1ステップしたら一気に増えた?
> もし、そうだとしたら、ウォッチウィンドウに
> deckCardNumber++
> とか書いていませんか?
>
>
ループというよりデバッグモードでコンテニューを押すとまたそこに戻るようになってました。
何回かコンテニューを押してそこに行くのでcardArray[]がだんだん増えていく感じです。
最終的にcardArray[]は増えて5になりました・・・・
何故・・・

引用返信 編集キー/
■66503 / inTopicNo.16)  Re[1]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Jitta (40回)-(2013/04/29(Mon) 20:25:11)
Jitta さんの Web サイト
No66485 (Cubers さん) に返信
 コードの各所で、コンピュータに何をさせようとしているか、わかっていますか?
プログラムは、人間が思ったとおりに動くわけではありません。
書いてあるとおりに動きます。
「思ったこと」と「書いたこと」が一致しないと、期待通りに動いてはくれません。
よって、期待通りに動かないときには、
「思ったこと」と「書いたこと」が一致しているか、
確認するところからはじめます。

> private void Form1_Paint(object sender, PaintEventArgs e)
> {
>     if (myDraw)
>     {
>         Point myPoint = new Point(75, 50);
>         myCards.DrawCard(e, myCards.GetNewCard(), myPoint);
>     }
> }
これは、Paint イベントが発生すると通ります。
myCards.DrawCard メソッドの呼出に GetNewCard メソッドの戻り値を使用しています。
すると、Paint イベントが発生するとカードが進んでいきますが、問題ないですか?
Paint イベントがどの様な時に発生するか、押さえていますか?
「Refresh メソッドを呼び出したとき」だけではないですよ。


> public int GetNewCard()
> {
>     deckCardNumber++;
>     deckCardNumber %= 52;
>     return cardArray.ElementAt(deckCardNumber);
> }
> public int previousNum()
> {
>     deckCardNumber++;
>     deckCardNumber %= 52;
>     return cardArray.ElementAt(deckCardNumber-1);
> }
表示したい番号は、myCards.GetNewCard() で取得するのですよね?
では、最初に GetNewCard メソッドを実行すると、取得されるのは、何番目ですか?
また、取得したいのは、何番目ですか?
その違いは、どうして発生すると思いますか?

previous がおかしくないですか?
cardArray.ElementAt(deckCardNumber - 1) ですが、その前にインクリメントしています。
すると、今と同じものになりますよ?
また、メソッド呼出前に deckCardNumber が 51 だったら、
インクリメントして52、
剰余をとって 0、
配列の-1番目の要素にアクセスしようとしてエラー、ですよ。


> public void DrawCard(PaintEventArgs e, int cardNumber, Point p)
> {
>     // Create a Bitmap object from a file.
>     Bitmap myBitmap = new Bitmap("..//..//cards.png");
>     int xOffset = 0; // TBD - Need to handle all cards
>     int yOffset = 0;    // TBD - Need to handle all cards
>
>     if ((cardNumber <= 12) && (cardNumber >= 0))
>     {
>         xOffset = +cardNumber * width; // TBD - Need to handle all cards
>     }
>     else if ((cardNumber <= 25) && (cardNumber >= 13))

yOffset = (cardNumber / 13) * 123;

 cardNumber が int なら、int / int は int、除算の商のみになります。
cardNumber が 0〜12 の間は (cardNumber / 13) * 123 = 0 * 123 = 0 です。
cardNumber が 13〜25 の間は (cardNumber / 13) * 123 = 1 * 123 = 123 です。
cardNumber が 26〜38 の間は (cardNumber / 13) * 123 = 2 * 123 = 246 です。

引用返信 編集キー/
■66504 / inTopicNo.17)  Re[14]: C#カードゲーム作成中 助けて〜TT
□投稿者/ とっちゃん (115回)-(2013/04/29(Mon) 20:30:18)
とっちゃん さんの Web サイト
No66502 (Cubers さん) に返信
> ループというよりデバッグモードでコンテニューを押すとまたそこに戻るようになってました。

ブレークしたので、F5を押して実行したらすぐにまた同じところで止まったということですか?
1ステップずつ実行して、メソッドから戻った後の動きも追いかけてみましょう。

どこかから意図しない呼び出しが連続的(あるいは間接的)に呼ばれていることで結果として、数値が増えてしまうのだと思いますよ。


> 何回かコンテニューを押してそこに行くのでcardArray[]がだんだん増えていく感じです。
> 最終的にcardArray[]は増えて5になりました・・・・
> 何故・・・
>
cardArray[] は配列ですよね?それがどんどん増えていく?配列の要素が増えるのですか?

ElementAt 拡張メソッドは、指定要素の値を取り出す拡張メソッドなので
要素が増えるということはないと思うのですが?

引用返信 編集キー/
■66505 / inTopicNo.18)  Re[2]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Azulean (151回)-(2013/04/29(Mon) 22:09:17)
Paint イベント(今見ているポイントだと GetNewCard の呼び出し元)が何度も呼ばれるとしたら、

(1)Refresh や Invalidate を呼んでいる
(2)メッセージボックスがフォームと重なった
(3)Visual Studio とフォームが重なった

あたりでしょうかね。
(2)や(3)は Windows Vita 以降だと、非 Aero 環境でのみ再現する(逆に言えば Windows XP では普通に再現する)現象ですね。
実行環境が書いていないので特定しきれませんが。

引用返信 編集キー/
■66521 / inTopicNo.19)  Re[3]: C#カードゲーム作成中 助けて〜TT
□投稿者/ Cubers (7回)-(2013/05/01(Wed) 15:05:38)
なんとなくですが何をすればいいのか分かったので解決とします。
助けてくださった皆様方ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -