ブロック崩し Step1 矢印キーで左右に動かせるパドルを描画する < パドルの表現方法 > パドルは java.awt パッケージの Rectangle という Java が用意しているクラスを使う これは四角形を表すクラスで 左上の点の座標と幅 高さをもっている (x, y) Rectangle
|
|
|
- ゆき さわい
- 7 years ago
- Views:
Transcription
1 GUI プログラミング第 3 回演習 BlockBreaker ~ かんたんブロック崩しゲーム ~ パドルを左右に操作して落ちてくるボールを反射させ 上のブロックを崩していく ブロック ボール パドル <Eclipse を起動する > 1.eclipse.zip を D: ドライブにコピーし 右クリック ここに解凍 2.workspace を S: ドライブから D: ドライブにコピー 3.eclipse.exe を起動 4.workspace を D:workspace に設定 < ブロック崩しのステップ > ステップ 1 矢印キーで動かせるパドルを描画ステップ 2 ボールを描画し アニメーションで動かす + 時間表示ステップ 3 ブロックを描画し 崩せるようにする発展課題 1 パドルをマウスでも動くようにする発展課題 2 ボールが当たったパドルの位置で反射の仕方を変える発展課題 3 スコア ハイスコア表示 + 色を自由に変更 -1-
2 ブロック崩し Step1 矢印キーで左右に動かせるパドルを描画する < パドルの表現方法 > パドルは java.awt パッケージの Rectangle という Java が用意しているクラスを使う これは四角形を表すクラスで 左上の点の座標と幅 高さをもっている (x, y) Rectangle height width 2D の世界では フレームやパネルの左上が原点 右に x 座標正方向 下に y 座標正方向となる < グラデーションの描画 > ただ四角を描画するとのっぺりするので グラデーションで少し見た目を整える 2 色のグラデーションのパターンは java.awt パッケージの GradientPaint クラスのオブジェクトを使うと簡単に設定できる GradientPaint gp = new GradientPaint( 点 1 の x 座標, 点 1 の y 座標, 色 1, 点 2 の x 座標, 点 2 の y 座標, 色 2, 循環するかどうか ) このようにオブジェクトを作ったとき 点 1 と点 2 によって指定される区間を色 1 から色 2 に補完していく 最後の引数を true にすると繰り返しグラデーションする 上の図で点 1 を BLUE 点 2 を RED とすると 色 1 が青 色 2 が赤点 1 を通る平行ライン上は青 点 2 を通る平行ライン上は赤になる <BlockBreakerPanel.java の作成 > 1.BlockBreaker プロジェクトを新規作成パッケージ エクスプローラで右クリック 新規 Java プロジェクトプロジェクト名 BlockBreaker 2. パッケージを作成 src フォルダを選択 右クリック 新規 パッケージパッケージ名 animation 3.BlockBreakerPanel クラスを作成 JPanel を継承 (extends) KeyListener を実装 (implements) したクラス animation パッケージを選択 右クリック 新規 クラス クラス名 BlockBreakerPanel スーパークラスの参照をクリック JPanel とうつと javax.swing の JPanel が出てくるので それを選択して OK インターフェースの追加をクリック KeyListener で出てくるクラスを選択して OK 4. ソースを編集 説明のためにコメントが多くあるが 必要以上書かなくてよい -2-
3 BlockBreakerPanel.java package animation; import java.awt.color; import java.awt.gradientpaint; import java.awt.graphics; import java.awt.graphics2d; import java.awt.rectangle; import java.awt.event.keyevent; import java.awt.event.keylistener; import javax.swing.jpanel; public class BlockBreakerPanel extends JPanel implements KeyListener{ private Rectangle paddle; // パドル private int pwidth = 50; // パドルの幅 private int pheight = 10; // パドルの高さ /** * コンストラクタ */ public BlockBreakerPanel() { // キーイベントを受け取れるようにする addkeylistener(this); /** * 描画メソッド */ public void paintcomponent(graphics g){ // ボタンなど配置していなければいらないが 忘れずに書く習慣にする super.paintcomponent(g); // より高度な描画を可能にするようキャスト Graphics2D g2d = (Graphics2D)g; // 各描画対象の初期位置を計算して設定 /* このパネルがフレームに貼り付けられないとサイズが確定しないので * コンストラクタの中では getwidth() などに正しい値がはいらない * そのため ここでパドルの初期化と初期位置の決定を行う */ if (paddle == null) { // パドルを Rectangle オブジェクトとして使う paddle = new Rectangle(pWidth, pheight); // パドルの初期位置は x 方向は中心 y 方向は下から 20 あけたところ /* パドルの左上の x 座標 y 座標を * getwidth(),getheight(),pwidth, pheight を使って埋めて下さい */ paddle.setlocation( x 座標, y 座標 ); /* 白色背景 */ // 白をセット g2d.setcolor(color.white); // 四角で塗りつぶす fillrect( 左上の x 座標, 左上の y 座標, 幅, 高さ ) g2d.fillrect(0, 0, getwidth(), getheight()); /* パドル描画 */ // グラデーションパターンを指定する ( ブルー ホワイト ) // new GradientPaint( 点 1のx 座標, 点 1のy 座標, 色 1, 点 2のx 座標, 点 2のy 座標, 色 2, 循環するか ) GradientPaint gp = new GradientPaint(paddle.x, paddle.y, Color.BLUE, paddle.x, paddle.y+paddle.height/2, Color.WHITE, true); g2d.setpaint(gp); // パドルを描画 g2d.fill(paddle); -3-
4 BlockBreakerPanel.java /** * キーを押すと呼ばれる * 矢印キーでパドルが左右に動く */ public void keypressed(keyevent e) { int pdx = 10; // 1 回のキー操作でずらす量 // 押されたキーのコードを取得 int keycode = e.getkeycode(); // キーコードで分岐 switch (keycode) { // 左矢印キーだったら case KeyEvent.VK_LEFT: // パドルが左に 10 ずれる ( 壁にめりこまない ) // Rectangle クラスの位置指定メソッド setlocation( 左上の点の x 座標, y 座標 ) if (paddle.x < pdx) paddle.setlocation(0, paddle.y); else paddle.setlocation(paddle.x-pdx, paddle.y); // 再描画 repaint(); break; // 右矢印キーだったら case KeyEvent.VK_RIGHT: // パドルが右に 10 ずれる ( 壁にめりこまない if (getwidth()-paddle.x-paddle.width < pdx) paddle.setlocation(getwidth()-paddle.width, paddle.y); else paddle.setlocation(paddle.x+pdx, paddle.y); // 再描画 repaint(); default: break; /* 以下の 2 つのメソッドは KeyListener を * implements したため必要だが 空でよい */ public void keyreleased(keyevent e) { public void keytyped(keyevent e) { -4-
5 <BlockBreakerFrame.java の作成 > 1. フレームを作成 animation パッケージ選択 右クリック 新規 その他を選択 GUI Forms Swing JFrame を選んで 次へ Class Name は BlockBreakerFrame として 完了 2.Jigloo のメッセージが出てきたら OK 3.Look&Feel( プログラムの見た目 ) を設定フレームを選択 右クリック Set Look&Feel Windows を選択 4. レイアウトを設定フレームを選択 右クリック Set Layout BorderLayout を選択 5. フレームのサイズを大きめにするソースの方をみて initgui() の中の下の方にあるサイズ指定部分を編集 setsize(400,300); setsize(330,500); 6. フレームのプレビューに戻り パネルを North に追加上部の Containers 右から 5 番目の JPanel を選び フレームに貼り付ける名前は northpanel Constraints の中の direction に North を選択 7. パネルを South に追加名前は southpanel Constraints の中の direction に South を選択 8.southPanel の高さをで適当に大きくする ( ボタンが張り付けられるくらい ) このくらい 厳密にしたい場合は preferredsize プロパティを数字で 40 に指定する 9. パネルを East に追加名前は eastpanel Constraints の中の direction に East を選択 10. パネルを West に追加名前は westpanel Constraints の中の direction に West を選択 -5-
6 11. BlockBreakerPanel を Center に追加フレームを選択 ( 中央をクリック ) 右クリック Add Add Custom Add custom class or layout を選択 BlockBreakerPanel と入力して OK 名前を centerpanel とし Constraints の中の direction が Center になっていることを確認して OK 12. centerpanel のボーダー ( 境界線 ) を設定する centerpanel を選択 下の GUI Properties ウィンドウで Properies の Basic の中の border を EtchedBorder にする 13. southpanel のレイアウト設定 southpanel を選択 右クリック Set Layout AbsoluteLayout を選択 14. southpanel にボタンを 2 つ追加 Step2 以降で使うのもだが ここで追加しておく Components の一番左にある JButton を選んで southpanel に貼り付け 1 つ目 : 名前 startbutton テキスト START 1 つ目 : 名前 stopbutton テキスト STOP 保存するとこのようになる 15. ボタンが押されたときに実行されるメソッドのひな型を作成 startbutton を選択し Event Name のリスト中の ActionListner を開いて actionperformed を inline に設定する stopbutton にも同じ操作をしておく 16. キー操作を有効にするには centerpanel にフォーカスされている必要があるので コンストラクタに以下の記述を追加する ) public BlockBreakerFrame() { super(); initgui(); centerpanel.requestfocus(); 17. 実行する 18. 矢印キーでパドルが左右に動くことを確認 ( 現時点ではボタン操作はしない ) -6-
データ構造とアルゴリズム論
第 1 章.Java による CG 作成方法 2 学習のねらい 1 先週に続いて Java 言語 (Eclipse 環境における ) を用いて CG( コンピュータグラフィックス ) を作成する方法の基礎を学習する 今回は ( 作成した )CG が自動的に再描画される様にするための処理 ( のプログラミング ) を学習する 今回の学習で Java による CG 作成方法を終了し 次週以降は CG 作成のアルゴリズムの学
Microsoft PowerPoint prog1_doc2x.pptx
アプレット public class extends Applet { public void paint(graphics g) { // アプレット描画 g.drawstring( Hello World, 10, 20 ); page 1 アプレット : 色 public class extends Applet { Color col; // カラークラス int red, grn, blu;
PowerPoint Presentation
ソフトウェア演習 B GUI を持つ Java プログラムの 設計と実装 4.1 例題 :GUI を持った電卓を作ろう プロジェクトCalculator パッケージ名 :example ソースファイル : Calculator.java GUI.java EventProcessor.java 2 4.2 GUI とイベント処理 GUI の構成 :Swing GUI の場合 フレーム JFrame:
次の演習課題(1),(2)のプログラムを完成させよ
次の演習課題 (1),(2) のプログラムを作成せよ. 課題 (1) ボタン押下時の処理を追加し以下の実行結果となるようにプログラムを作成しなさい ( ボタン押下時の処理 ) import java.lang.*; class Figure extends JFrame implements ActionListener{ JPanel panel; JScrollPane scroll; JTextArea
第1章 ビジュアルプログラミング入門
第 10 章補足 -Java プログラムを一から記述してみようー 学習内容とねらい これまで本テキストで扱ってきたのは主に Windows アプリケーション (Windows 上のボタンクリック等による動作するプログラム ) でした ですから 皆は Eclipse を用いて Windows アプリケーションを作成する方法には習熟したはずです 皆も経験した通り Eclipse( およびそこにプラグインされている
第1章 ビジュアルプログラミング入門
付録 A 既存のクラスの利用の仕方 第 7 章では フレームクラス (NewJFrame.java) とそこから呼び出されるクラス (Meibo.java など ) を同じプロジェクト内 つまり同じパッケージ内に定義しました しかし 一般には 別のパッケージ ( フォルダ ) に保管されているクラスを利用する場合があります ここでは その方法を説明します なお フォルダは Java の用語ではパッケージに対応するので
< F2D F B834E2E6A7464>
ランダムウォーク [Java アプレット ] [Java アプレリケーョン ] 1. はじめに 酔っぱらいは前後左右見境なくふらつきます 酔っぱらいは目的地にたどり着こうと歩き回っているうちに何度も同じところに戻って来てしまったりするものです 今 酔っぱらいが数直線上の原点にいるとします 原点を出発して30 回ふらつくとき 30 回目に酔っぱらいがいる位置は 出発点である原点からどれくらい離れてしまっているのでしょうか
Microsoft PowerPoint prog1_doc2.pptx
2011 年 12 月 6 日 ( 火 ) プログラミング Ⅰ Java Applet プログラミング 文教大学情報学部経営情報学科堀田敬介 アプレット Applet public class クラス名 extends Applet { public void paint(graphics g) { // アプレット描画 g.drawstring( Hello World, 10, 20); 10
Java言語 第1回
Java 言語 第 11 回ウインドウ型アプリケーション (2) 知的情報システム工学科 久保川淳司 [email protected] メニュー (1) メニューを組み込むときには,MenuBar オブジェクトに Menu オブジェクトを登録し, その Menu オブジェクトに MenuItem オブジェクトを登録する 2 つの Menu オブジェクト File New
スライド 1
グラフィックスの世界第 3 回 サイバーメディアセンター サイバーコミュニティ研究部門安福健祐 Processing によるアニメーション setup と draw void setup() size(400, 400); void draw() ellipse( mousex,mousey,100,100); void とか setup とか draw とかはじめて見る が出てきてややこしい ellipseは円描く関数でした
KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped
KeyListener keypressed(keyevent e) keyreleased(keyevent e) keytyped(keyevent e) MouseListener mouseclicked(mouseevent e) mousepressed(mouseevent e) mousereleased(mouseevent e) mouseentered(mouseevent e)
第1章 ビジュアルプログラミング入門
第 9 章アプレット 学習内容とねらい 本章では Java 言語で作ったプログラムを Web ブラウザ上で動作させる方法を学習します Java 言語には これまで作成してきた Windows アプリケーションの他に Web ブラウザ上で動作させる事のできるアプレットという形態があります このアプレットを利用すれば Web 上で Java プログラムを公開することもできます アプレットは Java 言語の普及当初は
< F2D82518CC282CC D2E6A7464>
2 個のさいころ 1. はじめに [Java アプレット ] [Java アプリケーション ] 2 個のさいころを同時に投げたときの目の出方を考えてみましょう この 2 個のさいころをそれぞれ さいころ Ⅰ さいころ Ⅱ とすると その目の出方は順に 1 1 2 1 3 1 4 1 5 1 6 1 1 2 2 2 3 2 4 2 5 2 6 2 1 3 2 3 3 3 4 3 5 3 6 3 1 4
Java講座
~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト
Chapter JDK KeyListener keypressed(keyevent e ) keyreleased(keyevent e ) keytyped(keyevent e ) MouseListener mouseclicked(mouseeven
Chapter 11. 11.1. JDK1.1 11.2. KeyListener keypressed(keyevent e ) keyreleased(keyevent e ) keytyped(keyevent e ) MouseListener mouseclicked(mouseevent e ) mousepressed(mouseevent e ) mousereleased(mouseevent
C#の基本
C# の基本 ~ 開発環境の使い方 ~ C# とは プログラミング言語のひとつであり C C++ Java 等に並ぶ代表的な言語の一つである 容易に GUI( グラフィックやボタンとの連携ができる ) プログラミングが可能である メモリ管理等の煩雑な操作が必要なく 比較的初心者向きの言語である C# の利点 C C++ に比べて メモリ管理が必要ない GUIが作りやすい Javaに比べて コードの制限が少ない
< F2D825282CC947B909482CC A815B83682E6A>
3 の倍数のトランプカード 1. はじめに [Java アプレット ] [Java アプリケーション ] ここにトランプが 1 組あります ジョーカー 2 枚を除いて 52 枚を使います 3 の倍数は スペード クローバ ダイヤ ハートに それぞれ 3 と 6 と 9 と 12 の 4 枚ずつあるので 4 4=16 枚あります この 52 枚のトランプから 1 枚引いたとき そのカードが 3 の倍数である確率を考えます
Graphical User Interface 描画する
Graphical User Interface 描画する オブジェクト指向プログラミング特論 2016 年度 只木進一 : 工学系研究科 2 描画の基本 javax.swing.jpanel に描画する paint() または paintcomponent() メソッドを上書きすることによって描画する この中で描画対象を描く 基本的図形要素は準備されている しかし 画面の重なりによる再描画の場合
10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料
10/28 Java AWT の基本構造 (Frame クラスの継承 ) 演習課題資料以下のプログラムを完成せよ 共通課題 1.Frame を生成するプログラム // Frame クラスを継承して 終了ボタンのみを定義した クラスの定義 class WhiteWindow 1 { // Frame クラスの継承をする (Frame クラスの拡張 ) WhiteWindow (String title){
2
プログラミング応用演習 b 10 月 5 日演習課題 2016/10/05 PAb 演習課題 プログラム仕様書作成課題 課題クラスを読み 次に示すクラスの仕様書を完成させよ なお 仕様書は クラス 1 つに付き 1 つ作成す る 加えて 図 1 のようなクラス継承の模式図を作成せよ < クラス名 のプログラム仕様書 > 作成者 : 学籍番号 名前 (1) クラスクラス名 : クラス名 説明 : クラスが何を表現しているか
< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>
2 次関数のグラフの平行移動 [Java アプレット ] [Java アプリケーション ] 1. はじめに 2 2 y=ax のグラフとy=a(x-b) +c のグラフは 位置は違うけれど 形も広がりも全く同じです 2 2 y=a(x-b) +c のグラフは y=ax のグラフをx 軸方向に ( 右方向に ) +b y 軸方向に ( 上方向に ) +c だけ平行移動したものです 2 シミュレーションソフト
I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav
2018 06 08 11:00 12:00 I. I III II. III. IV. ( a d) V. VI. 80 40 40 100 60 : A ActionListener aa addactionlistener AE ActionEvent K KeyListener ak addkeylistener KE KeyEvent M MouseListener am addmouselistener
情報システム設計論II ユーザインタフェース(1)
プログラミング演習 (5) 条件分岐 (2) 中村, 高橋 小林, 橋本 1 目標 Processing で当たり判定に挑戦! 条件分岐を理解する 何らかの条件を満たした時に色を変える! マウスカーソルと動いている円がぶつかったら終了 シューティングゲームやもぐらたたきに挑戦! 課題 : Processing でゲームを作ろう! 占いを作ってみよう フローチャートと条件分岐 プログラムの流れ 年齢確認
Java言語 第1回
Java 言語 第 8 回ウインドウ部品を用いる (1) 知的情報システム工学科 久保川淳司 [email protected] 前回の課題 (1) マウスを使って, 前回課題で作成した 6 4 のマスの図形で, \ をマウスクリックによって代わるようにしなさい 前回の課題 (2) import java.applet.applet; import java.awt.*;
2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible
12 2013 7 2 12.1 GUI........................... 12 1 12.2............................... 12 4 12.3..................................... 12 7 12.4....................................... 12 9 12.5 : FreeCellPanel.java............................
Java言語 第1回
Java 言語 第 10 回ウインドウ型アプリケーション (1) 知的情報システム工学科 久保川淳司 [email protected] 前回の課題 (1) ボーダーレイアウト, グリッドレイアウト, パネルを使用して, 電卓風のボタンを実現する BorderLayout で NORTH, CENTER, SOUTH に分割 NORTHにはテキストフィールドを設定 CENTERにはパネルを使って9つのボタンを設定
PowerPoint プレゼンテーション
オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念
PowerPoint プレゼンテーション
かんたんマニュアル 基本操作編 目次 STEP:1 STEP:2 STEP:3 STEP:4 STEP:5 STEP:6 STEP:7 STEP:8 STEP:9 画面の確認をしよう用紙を選択しようテンプレートを使ってみよう文字を入力しよう文字の大きさを変えるにはイメージを貼り付けようコピー 保存しよう印刷しよう作ったデータを ほかの用紙に移すには P.2 P.4 P.5 P.7 P.9 P.11
第32回_プレゼン資料_菅原(Unityはじめるよ~上半身だけ動かす2~)
Unity はじめるよ 上半 だけ動かす 2 統合開発環境を内蔵したゲームエンジン http://japan.unity3d.com/ いろんな職業の が る資料なので説明を簡単にしてある部分があります 正確には本来の意味と違いますが上記理由のためです ご了承ください この資料内の 部の画像 部の 章は Unity 公式サイトから引 しています 上半 だけ動かす 複雑なステートマシンを体の各部分ごとに管理することができます
< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>
2 次関数のグラフの向きと広がり [Java アプレット ] [Java アプリケーション ] 1. はじめに 2 2 y=ax のグラフについて x の係数 aが正のときと負のときでは グラフにどのような違いがあるでしょうか 2 2 y=ax のグラフについて x の係数 aが正のとき 係数 aの値が大きくなるにつれて グラフの広がりはどうなるでしょうか 2 2 y=ax のグラフについて x の係数
Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////
Assignment_.java 0 0 0 0 0 /////////////////////////////////////////////////////////// // 課題 次のようにマウスのカーソルに同期しメッセージを /////////////////////////////////////////////////////////// class Assignment_ extends
Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=
Safari AppletViewer Web HTML Netscape Web Web 13-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web update Event Driven paint Signature Overwriting Overriding
JAVA入門
JAVA 入門後期 10 情報処理試験例題解説 H14 年度秋問 8 次の Java プログラムの説明及びプログラムを読んで, 設問に答えよ プログラムの説明 ディジタル論理回路シミュレータを作成するためのクラスとテスト用クラスである (1) ゲートを表す抽象クラス Gate のサブクラスとして, NOT ゲートを表すクラス NotGate 及び AND ゲートを表すクラス AndGate を定義する
PowerPoint プレゼンテーション
1 02 グラフゖックで簡単な図形を描く図形描画プログラム 1 今回作成するゕプリケーションの概要 ボタンをクリックすると図形を描くプログラム 行われる動作 [1] ボタンをクリック [2] そのボタンに対する図形を描く これを使用者とコンピュータの関係で描くと [ 使用者 コンピュータ ] ボタンをクリック [ 使用者 コンピュータ ] 図形を描画して見せる 使用者がコンピュータにすること ボタンをクリック
I 4 p.2 4 GUI java.awt.event.* import /* 1 */ import mouseclicked MouseListener implement /* 2 */ init addmouselistener(this) this /* 3 */ this mousec
I 4 p.1 4 GUI GUI GUI 4.1 4.1.1 MouseTest.java /* 1 */ public class MouseTest extends JApplet implements MouseListener /* 2 */ { int x=50, y=20; addmouselistener(this); /* 3 */ public void mouseclicked(mouseevent
