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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1469閲覧

シューティングゲームで弾を連射したい

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

2クリップ

投稿2017/07/26 00:34

javaでシューティングゲームを作ってる者です。
弾を単発で出すことが出来たのですが、連射することができません。
特にエラーコードが出ている訳ではなくてただ自分の知識不足なのですがどなたか回答よろしくお願いします。

コードです!
package jp.ohtsuki.minigame;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Insets;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferStrategy;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Syuutingu {
Image jiki;
Image teki;
Image back;
Image tama;
JFrame frame1;
BufferStrategy bstrategy;
int tx,ty;
int x = 440;
int y = 660;
boolean tflag;
boolean keySpace,keyup,keydown,keyright,keyleft ;
Thread gamethread;
public void init(){

tflag = false; keySpace=keyup=keydown=keyright=keyleft = false; } Syuutingu(){ frame1 = new JFrame("シューティングゲーム(労作展)"); frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame1.setBackground(Color.WHITE); frame1.setResizable(false); frame1.setVisible(true); Insets insets = frame1.getInsets(); frame1.setSize(900 + insets.left + insets.right, 700 + insets.top + insets.bottom); frame1.setLocationRelativeTo(null); frame1.setIgnoreRepaint(true); frame1.createBufferStrategy(2); bstrategy = frame1.getBufferStrategy(); frame1.addKeyListener(new MyKeyAdapter()); try{ jiki = ImageIO.read(getClass().getResourceAsStream("15.jpg")); teki = ImageIO.read(getClass().getResourceAsStream("ardyn-izunia.jpg")); back = ImageIO.read(getClass().getResourceAsStream("8956325_102954414000_2.jpg")); tama = ImageIO.read(getClass().getResourceAsStream("sample.png")); }catch(IOException e){ e.printStackTrace(); } Timer t = new Timer(); t.schedule(new MyTimerTask(),10,10); } public static void main(String[] args) { Syuutingu gtm = new Syuutingu(); } class MyTimerTask extends TimerTask{ public void run(){ Graphics g = bstrategy.getDrawGraphics(); if (bstrategy.contentsLost()== false) //Insets insets = frame1.getInsets(); //g.translate(insets.left, insets.top); if(keyup){ y-=6; if(y<0) y = 0; } if(keydown){ y+=6; if(y>675) y=675; } if (keyleft) { x -= 6; if (x < 0) x = 0; } if (keyright) { x += 6; if (x >860) x = 860; } if (keySpace) { if (!tflag) { tx = x + 12; ty = y; tflag = true; } } if (tflag) { if (ty < 0) tflag = false; else ty -= 8; } g.clearRect(0, 0, 900, 700); g.drawImage(back, 0, 0, frame1); g.drawImage(jiki, x, y, frame1); if (tflag) g.drawImage(tama, tx, ty, frame1); bstrategy.show(); g.dispose(); } } class MyKeyAdapter extends KeyAdapter{ @Override public void keyPressed(KeyEvent ev) { switch(ev.getKeyCode()){ case KeyEvent.VK_UP : keyup = true;break; case KeyEvent.VK_DOWN : keydown= true; break; case KeyEvent.VK_LEFT : keyleft = true; break; case KeyEvent.VK_RIGHT : keyright = true; break; case KeyEvent.VK_SPACE: keySpace = true; break; } } public void keyReleased(KeyEvent ev) { switch(ev.getKeyCode()){ case KeyEvent.VK_UP : keyup = false;break; case KeyEvent.VK_DOWN : keydown= false; break; case KeyEvent.VK_LEFT : keyleft = false; break; case KeyEvent.VK_RIGHT : keyright = false; break; case KeyEvent.VK_SPACE: keySpace = false; break; } } } }
A-pZ👍を押しています

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

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

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

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

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

m.ts10806

2017/07/26 00:54

プログラムコードは```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)
guest

回答2

0

ベストアンサー

この作り方では弾は一個しか管理できてないからです。

考え方だけ記載します
1.弾用クラスを作成して弾処理をこのクラスに落とし込んで動くようにし、その後このクラスを配列で管理する
2.弾に関する変数(tflagとtxとtyなど)を配列にして管理する&スペース押したときにどのtflag配列を使用できるかを調べてそこにフラグを設定する

どっちでも出来ますが、1をおすすめしておきます。

投稿2017/07/26 03:45

rururu3

総合スコア5545

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

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

0

解決しました!
分かりにくい質問に答えてくださりありがとうございました

投稿2017/07/29 14:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問