福本屋

漫画とかアニメとかをレビューしたりするブログ。あと日記。リンクフリー。 5/22:テンプレ変えたー。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

丸一日近く頑張った。

安西先生・・・・・・ゲームが・・・・・・やりたいです・・・
(課題を)あきらめたらそこで単位終了だよ?

(挨拶)


記事タイトルの通り、実験の課題でほぼ丸一日くらい頑張りました。
その後同じくらい寝たけどな!!!

※今回はプログラミング関連の話なので興味ない人はご注意を。

提出期限が今週月曜の24時までだったんですが、
本格的に取り掛かり始めたのが月曜の朝。まさに⑨。
課題の内容はJavaのプログラミング
2つあるうちのどちらかを選んで解くものだったんですが、
自分はそのうちそれまでの課題で作ったものを改良する方を選びました。

簡単に言ってしまうと、Javaでお絵かきソフト作れって課題。
改良する内容は特に指定されていないので、人によって作るプログラムにかなりの差が出る
それまでの課題で、単純にウィンドウ(ボタンとか何もない)を表示、
その中でドラッグしたら四角形がかけるプログラムは作ってあった。

あたしゃそこまでJavaを理解してないので、今回は
色選択(赤・緑・青)、図形選択(四角・塗りつぶし四角・楕円・塗りつぶし楕円・直線)、全消しボタン
を全部ボタンで実装。拡張する場合とか考えると非常に厄介なことになりますが
もうJComboBoxとかJColorChooserとかで実装すんのは理解するのに時間がかかりそうで、
諦めないと提出期限に間に合わない的な意味で試合終了しそうなので諦めました。
まあむしろ他人から見ても何してるかは分かりやすいプログラムにはなったと思うので
そこは良かったと思う。思いたい。

朝から作り始めて、昼ごろに↑の機能を実装完了。この時点で6~7時間。
シャワーを浴びて大学内の電算機室へ。
実際に学内PCでコンパイル・実行し、きちんと動作することを確認してからレポートの作成開始。
それまでの課題は単純にプログラムリストとか設計方針とか実行例、考察をまとめてメール提出だけでよかったんですが、
今回はその実験の総まとめ的なレポートだったので1からまとめ直す必要があったのと、
提出方法がPDFだったのでかなり時間を食いました。
慣れないOpenOfficeの文章エディタで章分けとかなるべくするようにして作成。途中で友人が来たり帰ったり。
提出期限の数時間前に完成して提出完了。
さーて、後は来週以降のレポート面接時にフルボッコにされる準備をするだけだ(えー
その後気づいたら火曜の講義の時間になってました。爆睡したうえに二度寝パネェ。

そういや、いつもなら夜9時(夜間主コースの講義終了時刻)になればシャットダウンされるはずなんですが、何故か月曜は全くされずにずっとついてました。
いつシャットダウンされるんだろうと思いながら、完成してない友人の隣で提出期限ぎりぎりまで推敲作業して再提出とかしてたんですが、なんと、夜11時半くらいでも開いてました
結局誰も来ずシャットダウンもされないまま出て帰宅したんですが、あの後どれくらいついたままだったんだろうか?

さすがにプログラムのソースを丸ごと貼り付けるととてつもなく長い(大体300行)ので、
見たい人だけ見てってください→javafinal.txt
簡単にこのプログラムの説明をすると、DrawMouseListenerクラスでマウスの動き(ドラッグ開始座標、ドラッグ終了座標)を読み取ってDrawApplicationクラス内のreshapeメソッド(メソッド:C言語でいう関数みたいなもの)とかを介して各種図形描画用クラスに図形の開始位置と終了位置を渡してあげてます。

以下、ざっくばらんな解説。
・Figureクラス
最初の抽象(abstract)クラスFigureは他の○○Figureクラスをひとまとめにするためのもの。
RectangleFigure(四角形描画)クラスや他の描画クラスはすべてFigureクラスの子( (子) extends (親) )にしてます。
RectangleFigureクラスならdrawRect、OvalFigureクラスならdrawOvalと、それぞれの図形を描画するメソッドを使って描画させる。

・DrawApplicationクラス
描画された図形の情報を保持、必要に応じて図形情報を取り出し、どの種類の図形かによって違うクラスに対応するオブジェクト(Cでいうポインタみたいなの)を渡すクラス。あとボタンが押されたときの細かい動作はここにまとめてある。
図形を描画する際に図形情報からそれに対応する描画クラスを呼べるよう、if文でFigureクラスのオブジェクトfに与えるデータを分岐。
同じオブジェクトfでも、f=new RectangleFigureとした場合とf=new OvalFigureとした場合は描画される図形が変わります。これはポリモーフィズム(多様性)とか言われる性質です。
fはまずFigureクラスのオブジェクトとして定義されているわけですが、
このFigureクラスはRectangleFigure、fRectangleFigureなど5つのクラスを子クラスに持ちます
そのためf=new RectangleFigureとかしても大丈夫で、fにどの子クラスのオブジェクトを与えるかで
DrawPanelクラス(後述)でpaintメソッドが呼ばれた際にどの子クラスのメソッドが呼ばれるかが変わります。多分。きっと。おそらく。

各ボタンが押された時の行動はsetColorからallclearまでのとこ。setColor/getColorはその名の通り、色を変更/今の色がどれかを調べるメソッドです。
pRect/pOval/pLine/pfillは四角形/楕円/線/塗りつぶしが押されたときの処理をするメソッド。
直前に押されたことを示すためのboolean変数をそれぞれ定義して、
押されたら該当変数をtrue、それ以外の変数をfalseに変更。塗りつぶしに関しては、
図形変更ボタンが押されたときまで変えてたらおかしなことになるのでpRect/pOval/pLineでは
塗りつぶしかどうかの変数fillは変更なし。pfillでのみ反転させる。
allclearはその名のとおり全消し。図形情報を保持する配列を初期化して再描画(repaint)。

・DrawPanelクラス
DrawApplicationから図形の情報もらって描画の命令出すとこ。
簡単に言ってしまうとこいつが実際に図形が描画されるとこです。多分。

・DrawMainクラス
表示するウィンドウとかボタンとかを定義して表示してるとこ。
自分はここでボタンを定義、それだけでなくボタンが押されたときの動作も定義。
addActionListenerとかなってるとこは全部ボタン関係。

さすがにこれ以上書こうと思うとありえない長さになるうえに、
そもそも他人に事細かく説明できるほど理解してないのでここらで終了ー


ああ、次は今週末提出の課題だ・・・
スポンサーサイト

テーマ:日記 - ジャンル:日記

  1. 2008/07/02(水) 04:39:42|
  2. 日記
  3. | トラックバック:0
  4. | コメント:0
<<れっでっでっでれぇれれっでっでっ | ホーム | 漫画を買う理由? 考えたら負けかな、と思ってる。>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://dagakotowaru.blog35.fc2.com/tb.php/126-b0751c7b
この記事にトラックバックする(FC2ブログユーザー)



アイドルマスターランキング

プロフィール

福(小鳥遊P)

Author:福(小鳥遊P)
・漫画好きの24歳
・(一応)社会人二年生。
・細々とPやってます:P名は小鳥遊P。
・ほむらちゃんまじほむほむ

●FavoriteComic:デッドマン・ワンダーランド、ハニカム、屍姫、はじめてのあく、サイレン、etc…
●FavoriteCharacter:萩原雪歩(IDOLM@STER)、暁美ほむら(魔法少女まどか☆マギカ)、アロエ&シャロン(QMA)、フランドール・スカーレット(東方シリーズ)、etc
◆作品は主に漫画メインで楽しむことが多いというか、
 基本的に原作村の住人です。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する


THE IDOLM@STER OFFICIAL WEB

すーぱーそに子 OFFICIAL WEB SITE
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。