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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

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

Q&A

1回答

1253閲覧

[VC#]簡易シューティングゲームで、弾の発射開始位置に、弾の進行方向軸のマウス座標が反映されない

bono8102

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

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

0グッド

0クリップ

投稿2020/07/23 13:11

はじめまして。現在、Visual Studio2019のC#を用いて簡易なシューティングゲームを制作しています。

プロジェクトはwindows Formアプリケーションです 。

ダブルクリックでマウス座標(hx,hy)+自機(140,19)の位置から弾を発射したいと考えていますが、

以下のコードだとgxが140に固定されてしまいます。

どのようにすればgx = hx + 140;を反映できるでしょうか。

Graphics gg = Graphics.FromImage(canvas); private void initGame()//初期設定 { gx = hx + 140; } private void timer1_Tick(object sender, EventArgs e) { Cpos = PointToClient(Cursor.Position); hx = Cpos.X; hy = Cpos.Y; gy = hy + 19 / 2;     gg.DrawImage(gakumei.Image, new Rectangle(gx, gy, 140, 19));        if (utu)//ダブルクリックでtrue { gx +=5; gg.DrawImage(gakumei.Image, new Rectangle(gx, gy, 140, 19)) } pBase.Image = canvas; }

因みに、private void timer1_Tick(object sender, EventArgs e)内にgx = hx + 140;を入れてみましたが

自機に弾がくっついて飛んでいかなかったです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

弾を最初に描く処理と、右に弾が飛んでいく処理を分けたらいいと思います。

  • ダブルクリックした時にマウスの座標を保存する
  • Tick の中では保存したマウスの座標に弾の移動を足して(x座標+=140ですかね)、その位置に弾の画像を表示する

という感じはどうでしょう。

どのようにすればgx = hx + 140;を反映できるでしょうか。

gx = hx + 140; という処理は initGame() の中に書いてありますが、名前からして最初に一回だけしか呼ばれないんじゃないでしょうか。

因みに、private void timer1_Tick(object sender, EventArgs e)内にgx = hx + 140;を入れてみましたが自機に弾がくっついて飛んでいかなかったです。

それだと、常に現在のマウスの位置から140右に弾が表示されることになります。弾の発射位置をどこかに保存して、それに Tick ごとに140足す必要があります。

投稿2020/07/24 04:17

bboydaisuke

総合スコア5308

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問