日記 12/17

本来このブログは、「面倒くさい研究室生活や就活へのモチベーション」にするために始めたということを思い出しました。ブログを書いて表現することで、就活とかにも行きたくなってくると思うんですよね。

だから最近の話をしようと思います。 

 --------

12/17(月)

情報工学科の人間は、毎週月曜に情報工学実験という実験を2~5限までやります。

 

情報工学実験は、3週間にわたって1つのテーマの実験をするという内容なんですが、今週はマイクロプロセッサ実験という実験の2週目で、用意された基盤(ハードウェア)上で、プログラム(ソフトウェア)を組んで簡単なテニスゲームを作るという実験でした。

先週がチュートリアルとゲームの内容を考える週で、今週から実際にゲームを作り始めるんですけど、4人チームで、僕はLCD(いわゆるゲーム画面)の表示担当でした。

 

正直大変なのはソフトウェア担当の人たちで、そのソフトウェアの担当は先週からやる気があってゲームの仕様を積極的に考えてくれてた2人に任せていました。画面表示担当だった僕はプリントを見ながらやっていたらできてしまうくらいでした。

 

画面表示の仕事が終わったらソフトウェアの製作の手伝いに回り、指定された関数を要望通りにC言語で記述したりしたんですけど、実験終盤くらいでどうやら問題が発生したらしくて、ゲームを画面に表示するところまではできたんですけど、ボタンの入力やスイッチの入力がうまく画面に反映されないんですね。どうやら、ソフトウェア担当が書いた入力待ちの関数が間違ってるっぽかったんですけど。

 

入力待ちの関数がどうやら間違ってる、って判明したところで実験が終わってしまいました。本来は「入力に応じて出力が変化する」ってところまでが今日のノルマだったので、今週はノルマには届かずでした。来週が不安ですね。でもソフトウェアの2人はやる気があるし、友達もいて有能そうなのでまあ大丈夫ではないかとは思っていますけど…。

 

やる気があって有能なのに何がダメだったのかって話なんですけど、たぶん頭がいいから回りくどくプログラムを設計しちゃってるんですよね。先生のサンプルコードとかはシンプルで愚直なやり方なんですけどそうせず、難しい道に行ってしまってるという感じがします。

 

例えば、僕らが作っているゲームの関数に、LCD画面に文字を表示する"Output()"という関数があります。(これはソフトウェアの人に頼まれて僕が書いた)

ソフトウェアの人からの要望では、「Output()を実行すると画面全てを表示する」「画面の”どこ”に、”なに”を表示するかはphysicalField[16][2]という変数に従う」という仕様で作ってくれと言われました。

こう言われるだけじゃわかりにくいかもしれませんが、つまりphysicalField[16][2]という変数は「文字」を表していて、[ ][ ]の中の数字は位置を表しています。例えばphysicalField[5][0]は画面の左から6列目、上から1行目の場所の文字を表しています。(5が6列目を表したり0が1行目を表したりしてるのはc言語の仕様)

つまり言いたいことは、physicalFieldはゲーム画面における全ての位置の文字を格納しているということです。

そして「何らかの原因(ユーザ操作、もしくは時間経過)によってphysicalFieldが変化する」→「Output()が実行されるたびにphysicalFieldが画面に反映される」というプログラムの流れなんですね。

しかし、先生が作ったサンプルコードの画面出力はこんなに複雑なものではなく、show_ball(int pos)という関数で位置(pos)を入力で受け取ってその位置に指定の文字を表示するというものなんです。

つまり、サンプルコードでは1つの位置に文字を表示しているだけなのに、僕らのコードでは全ての位置に文字を、それも同時に表示しているんですね。多機能。多機能にするために、physicalFieldという変数を作り出さないといけないしそういう部分でプログラムが難しくなっている

 

サンプルコードよりも高機能のものを作るというのは正しいことなんですけど、そういう部分がまだまだたくさんあって、大変になってしまっているのかなって思ってます。

まあ僕はソフトウェア組の言うことを聞いてるだけなので、こんなことを言ってもあまり意味はないんですけどね。

 --------

 

つらつら〜と、ただの情報工学科の愚痴を書いてしまって、何を言ってるかわからないという状態になってるかもしれませんが、それはごめんなさい。もっとわかりやすく説明したいですが僕には文章能力も時間もないので諦めてしまいました。

なんとなく情報工学科の実験ってこういうことしてるんだな、みたいなことはわかるかな…