質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

2回答

2350閲覧

DXライブラリでポーカーゲームを作っています

igusukeyade

総合スコア6

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2021/01/21 02:12

現在僕はDXライブラリでポーカーゲームを作っています。トランプカードのpngを52枚LoadGraphし、card_Gtaphic[52]として定義しました。
次はその52枚の中からランダムに5枚ずつ、計10枚画像を表示させたいのですがどのようにすればいいですか?
DXライブラリのリファレンスで調べるとGetRandという関数が出てきますがいまいち使い方がわからないです。未熟ですがソースを添付しておきます。```C++
コード

int card_Graphic[52]; void load() { card_Graphic[0] = LoadGraph("Card\A-1.png"); card_Graphic[1] = LoadGraph("Card\A-2.png"); card_Graphic[2] = LoadGraph("Card\A-3.png"); card_Graphic[3] = LoadGraph("Card\A-4.png"); card_Graphic[4] = LoadGraph("Card\A-5.png"); card_Graphic[5] = LoadGraph("Card\A-6.png"); card_Graphic[6] = LoadGraph("Card\A-7.png"); card_Graphic[7] = LoadGraph("Card\A-8.png"); card_Graphic[8] = LoadGraph("Card\A-9.png"); card_Graphic[9] = LoadGraph("Card\A-10.png"); card_Graphic[10] = LoadGraph("Card\A-11.png"); card_Graphic[11] = LoadGraph("Card\A-12.png"); card_Graphic[12] = LoadGraph("Card\A-13.png"); card_Graphic[13] = LoadGraph("Card\B-1.png"); card_Graphic[14] = LoadGraph("Card\B-2.png"); card_Graphic[15] = LoadGraph("Card\B-3.png"); card_Graphic[16] = LoadGraph("Card\B-4.png"); card_Graphic[17] = LoadGraph("Card\B-5.png"); card_Graphic[18] = LoadGraph("Card\B-6.png"); card_Graphic[19] = LoadGraph("Card\B-7.png"); card_Graphic[20] = LoadGraph("Card\B-8.png"); card_Graphic[21] = LoadGraph("Card\B-9.png"); card_Graphic[22] = LoadGraph("Card\B-10.png"); card_Graphic[23] = LoadGraph("Card\B-11.png"); card_Graphic[24] = LoadGraph("Card\B-12.png"); card_Graphic[25] = LoadGraph("Card\B-13.png"); card_Graphic[26] = LoadGraph("Card\C-1.png"); card_Graphic[27] = LoadGraph("Card\C-2.png"); card_Graphic[28] = LoadGraph("Card\C-3.png"); card_Graphic[29] = LoadGraph("Card\C-4.png"); card_Graphic[30] = LoadGraph("Card\C-5.png"); card_Graphic[31] = LoadGraph("Card\C-6.png"); card_Graphic[32] = LoadGraph("Card\C-7.png"); card_Graphic[33] = LoadGraph("Card\C-8.png"); card_Graphic[34] = LoadGraph("Card\C-9.png"); card_Graphic[35] = LoadGraph("Card\C-10.png"); card_Graphic[36] = LoadGraph("Card\C-11.png"); card_Graphic[37] = LoadGraph("Card\C-12.png"); card_Graphic[38] = LoadGraph("Card\C-13.png"); card_Graphic[39] = LoadGraph("Card\D-1.png"); card_Graphic[40] = LoadGraph("Card\D-2.png"); card_Graphic[41] = LoadGraph("Card\D-3.png"); card_Graphic[42] = LoadGraph("Card\D-4.png"); card_Graphic[43] = LoadGraph("Card\D-5.png"); card_Graphic[44] = LoadGraph("Card\D-6.png"); card_Graphic[45] = LoadGraph("Card\D-7.png"); card_Graphic[46] = LoadGraph("Card\D-8.png"); card_Graphic[47] = LoadGraph("Card\D-9.png"); card_Graphic[48] = LoadGraph("Card\D-10.png"); card_Graphic[49] = LoadGraph("Card\D-11.png"); card_Graphic[50] = LoadGraph("Card\D-12.png"); card_Graphic[51] = LoadGraph("Card\D-13.png"); } int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC) { ChangeWindowMode(true); DxLib_Init(); int haikei, Mouse, mozi; haikei = LoadGraph("haikei.jpg"); DrawRotaGraph(320, 240, 0.5, 0.0, haikei, TRUE); mozi = CreateFontToHandle("MS ゴシック", 50, 9, DX_FONTTYPE_NORMAL); while (1) { ProcessMessage(); DrawStringToHandle(100, 70, "ポーカーゲーム開始。", GetColor(255, 255, 255), mozi); Mouse = GetMouseInput(); if (Mouse & MOUSE_INPUT_LEFT) { break; } WaitKey(); } DxLib_End(); return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2021/01/24 13:04

すでに解決済みとなっていますが 質問のタイトルは質問内容を短く要約したものを 提示するソースはMarkdownを利用して記載してください。 質問するときのヒント https://teratail.com/help/question-tips こちらをよく読んでください。
guest

回答2

0

本題ではないので敢えて解決済みの質問にぶら下げますが、
繰り返される質問で毎回

C++

1void load() { 2 card_Graphic[0] = LoadGraph("Card\A-1.png"); 3 //ずら~っと50個並べる 4 card_Graphic[51] = LoadGraph("Card\D-13.png"); 5}

というのがなんだかイライラするので、

C++

1#include <sstream> 2void load(){ 3 const char SUIT[] = "ABCD"; 4 for (int s = 0; s < 4; s++) { 5 for (int n = 0; n < 13; n++) { 6 std::stringstream fname; 7 fname << "Card\" << SUIT[s] << '-' << n + 1 << ".png"; 8 card_Graphic[s*13+n]=LoadGraph(fname.str().c_str()); 9 } 10 } 11}

とかなんとかしませんか?

他の質問の

C++

1 DrawRotaGraph(110, 220, 0.125, 0.0, ura, TRUE); 2 DrawRotaGraph(220, 220, 0.125, 0.0, ura, TRUE); 3 DrawRotaGraph(330, 220, 0.125, 0.0, ura, TRUE); 4 DrawRotaGraph(440, 220, 0.125, 0.0, ura, TRUE); 5 DrawRotaGraph(550, 220, 0.125, 0.0, ura, TRUE);

なんていう類も記述量だけで言えば大して減りませんがやっぱりループを使って欲しいかな、と思います。

投稿2021/01/24 12:55

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

GetRandという関数が出てきますがいまいち使い方がわからないです

そのライブラリの公式のリファレンスっぽいところに
「0 から 引数で指定した値 のいずれかを返すぞ.戻り値はintだぞ」とか書かれてます.

なので,

int n; n = GetRand( 51 );

とか書けば,nの値は {0,1,2, ... , 50,51} のいずれかになるでしょう.

投稿2021/01/21 03:13

編集2021/01/21 03:14
fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

igusukeyade

2021/01/21 04:14

なるほど...それを書いたのちにDrawGraphを書いて表示する感じですかね?
fana

2021/01/21 04:29

そうですね. この GetRand を利用して,「ランダムに10枚選び出す」という処理をどのように実現するのかを考えるとよいでしょう.
igusukeyade

2021/01/21 07:51

なるほどやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問