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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

3回答

5423閲覧

弾幕stgをjavaで作成してみたくてとりあえずウィンドウを表示してみたのですが...

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2015/02/27 14:37

こんな感じでeclipseで組んでみましたが
コンソールの方に赤文字で色々でてきます

Gameクラス

lang

1import java.awt.*; 2 3public class Game{ 4 public static void main(String[] args){ 5 Create canvas = new Create(); 6 Thread t = new Thread(canvas); 7 8 Frame frm = new Frame("ゲーム画面"); 9 10 frm.setSize(600,500); 11 12 frm.setLayout(new GridLayout()); 13 frm.add(canvas); 14 frm.setBackground(new Color(0,0,0)); 15 16 t.start(); 17 18 frm.setLocationRelativeTo(null); 19 frm.setResizable(false); 20 21 frm.setVisible(true); 22 } 23 24} 25

Createクラス

lang

1import java.awt.*; 2 3public class Create extends Canvas implements Runnable{ 4 Image buffer; 5 Graphics bufferg; 6 7 public void run(){ 8 try{ 9 //ゲームループ 10 while(true){ 11 action();//処理 12 input_key();//キー入力 13 repaint();//再描画 14 //0.01s間をおく 15 Thread.sleep(10); 16 } 17 }catch(Exception e){ 18 19 } 20 } 21 22 /* 画面がクリアされないようにオーバーライドしておく */ 23 public void update(Graphics g){ 24 paint(g); 25 } 26 27 //描画 28 public void paint(Graphics g){ 29 if(bufferg == null){ 30 bufferg = buffer.getGraphics(); 31 } 32 /* キャンバスのサイズを取得する */ 33 Dimension d = getSize(); 34 35 bufferg.fillRect(0, 0, d.width, d.height); 36 37 //test 38 bufferg.setColor(Color.white); 39 bufferg.drawString("test", 20, 100); 40 41 g.drawImage(buffer, 0, 0, this); 42 } 43 //処理 44 public void action(){ 45 46 } 47 48 //キー 49 public void input_key(){ 50 51 } 52 53} 54

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

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

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

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

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

guest

回答3

0

ベストアンサー

エラーが出ているのはここですね

lang

1bufferg = buffer.getGraphics();

bufferがnullなのでNullPointerExceptionが出ているのでしょう.
コンストラクタでbufferにImageを渡してやりましょう.

ちなみにエラー文は

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at stg_study.Create.paint(Create.java:32)
at stg_study.Create.update(Create.java:26)
at sun.awt.RepaintArea.updateComponent(RepaintArea.java:267)
[...]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

でひとかたまりです.
何度も実行したために繰り返し表示されていたのでしょう.
1行目がエラーの原因(NullPointerException=null値を参照した)です.
2行目以降がエラーの原因となったメソッドの位置を表しています.
例えば2行目はCreate.paintというメソッドでのエラーで、
それがCreate.javaの32行目である、と言っています.
3行目は2行目のメソッドを呼び出したメソッド,4行目以下も同じです.
次回からこういう情報も参考にデバッグしていってみてください.

投稿2015/02/28 06:30

swordone

総合スコア20651

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

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

退会済みユーザー

退会済みユーザー

2015/02/28 07:37

なるほど エラー文はそういうことだったんですね ありがとうございました
swordone

2015/03/02 15:40

いまさらですが補足を 上記で「エラー」と書きましたが,これは「例外」と呼ばれるものです. 例外的な動作を行った場合に,JVMが対応するException系のオブジェクトを投げて その状態を知らせる仕組みになっています. 詳しくは「java 例外」で検索するといいです.
退会済みユーザー

退会済みユーザー

2015/03/03 13:04

あ、そっか exception が例外っていう意味ですもんね ありがとうございます
guest

0

直接の回答ではありませんが、コメントさせてください。

1つ目は、Swingを使った方が良い、ということです。
AWTよりも使える機能が増えていますし、情報を調べたりサンプルコードもSwingのものが多く見つかります。逆に言えばAWTだけを使ったコードはほとんどが古いものです。
(Java8からはJavaFXというGUI機能も標準搭載されましたが、まだ情報が少なくて正直お薦めできません。)

2つ目は、AWTとSwingのどちらを使ったとしても、GUIコンポーネントの描画に関係する処理は必ずイベントディスパッチスレッドで行うようにしてください。
そうでないと、プログラムが正しく動作する保証はありません。
処理をイベントディスパッチスレッドで行うようにするためには、SwingUtilities.invokeLaterを使います。
Canvasの中のrepaintなども同様にinvokeLaterを使って実行するようにします。
より詳しい情報は、下記ページなどを参考にしてください。

Swing (Java How To Programming)

SwingUtilities.invokeLaterの例

lang

1// import javax.swing.*; 2 3public static void main(String[] args) { 4 SwingUtilities.invokeLater(new Runnable() { 5 public void run() { 6 // JFrameの処理 7 } 8 } 9}

投稿2015/02/28 11:34

argius

総合スコア9390

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

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

退会済みユーザー

退会済みユーザー

2015/02/28 12:50

なるほど 参考にさせて頂きます
guest

0

コンソールの方に赤文字で色々でてきます

その「色々」の内容を貼ってください。

投稿2015/02/27 14:54

swordone

総合スコア20651

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

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

退会済みユーザー

退会済みユーザー

2015/02/28 05:39

こんなやつが出てきました at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97) at java.awt.EventQueue$3.run(EventQueue.java:690) at java.awt.EventQueue$3.run(EventQueue.java:688) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.awt.EventQueue.dispatchEvent(EventQueue.java:687) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at stg_study.Create.paint(Create.java:32) at stg_study.Create.update(Create.java:26) at sun.awt.RepaintArea.updateComponent(RepaintArea.java:267) at sun.awt.RepaintArea.paint(RepaintArea.java:233) at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263) at java.awt.Component.dispatchEventImpl(Component.java:4852) at java.awt.Component.dispatchEvent(Component.java:4604) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717) at java.awt.EventQueue.access$400(EventQueue.java:82) at java.awt.EventQueue$2.run(EventQueue.java:676) at java.awt.EventQueue$2.run(EventQueue.java:674) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97) at java.awt.EventQueue$3.run(EventQueue.java:690) at java.awt.EventQueue$3.run(EventQueue.java:688) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.awt.EventQueue.dispatchEvent(EventQueue.java:687) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at stg_study.Create.paint(Create.java:32) at stg_study.Create.update(Create.java:26) at sun.awt.RepaintArea.updateComponent(RepaintArea.java:267) at sun.awt.RepaintArea.paint(RepaintArea.java:233) at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263) at java.awt.Component.dispatchEventImpl(Component.java:4852) at java.awt.Component.dispatchEvent(Component.java:4604) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717) at java.awt.EventQueue.access$400(EventQueue.java:82) at java.awt.EventQueue$2.run(EventQueue.java:676) at java.awt.EventQueue$2.run(EventQueue.java:674) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97) at java.awt.EventQueue$3.run(EventQueue.java:690) at java.awt.EventQueue$3.run(EventQueue.java:688) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.awt.EventQueue.dispatchEvent(EventQueue.java:687) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at stg_study.Create.paint(Create.java:32) at stg_study.Create.update(Create.java:26) at sun.awt.RepaintArea.updateComponent(RepaintArea.java:267) at sun.awt.RepaintArea.paint(RepaintArea.java:233) at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263) at java.awt.Component.dispatchEventImpl(Component.java:4852) at java.awt.Component.dispatchEvent(Component.java:4604) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717) at java.awt.EventQueue.access$400(EventQueue.java:82) at java.awt.EventQueue$2.run(EventQueue.java:676) at java.awt.EventQueue$2.run(EventQueue.java:674) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97) at java.awt.EventQueue$3.run(EventQueue.java:690) at java.awt.EventQueue$3.run(EventQueue.java:688) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.awt.EventQueue.dispatchEvent(EventQueue.java:687) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at stg_study.Create.paint(Create.java:32) at stg_study.Create.update(Create.java:26) at sun.awt.RepaintArea.updateComponent(RepaintArea.java:267) at sun.awt.RepaintArea.paint(RepaintArea.java:233) at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263) at java.awt.Component.dispatchEventImpl(Component.java:4852) at java.awt.Component.dispatchEvent(Component.java:4604) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717) at java.awt.EventQueue.access$400(EventQueue.java:82) at java.awt.EventQueue$2.run(EventQueue.java:676) at java.awt.EventQueue$2.run(EventQueue.java:674) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
退会済みユーザー

退会済みユーザー

2015/02/28 05:40

こんなかんじのやつです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問