トップへ
田村研究室

課題解決ゼミ(田村クラス)

Subject Solving Technology

2014
3/4

講義概要

概要説明

  • 時間: 春学期水曜2時限
  • 場所: 4-108
  • 対象: S科2年(田村クラス)
  • 担当: 田村仁(創造システム工学科)

目的

リアルタイムプログラミングの基礎として,リアルタイムパズルゲームの代表格であるテトリスを,C言語を用いて作成する方法について解説する.C言語の基礎はわかったが,実際に何か実用的なプログラムを作成しようと思ったときに,どのように開発していくのかが分からないという人が多い.このクラスでそうした人のために,どのように考えて一からプログラムを作り上げていくのか,全手順を説明している.

ここでのテトリスは合計500行程度のプログラム量である.プログラミング初心者には大きな目標に見えるかもしれない.しかしテトリスのような一見複雑なプログラムも,「ブロックを回転させる」「揃ったラインを一つ消す」などの機能に分けて考えると,10個程度の機能からなっていることがわかる.それぞれの機能を実現するだけの単機能プログラムならば,どれも10行20行程度のプログラムでしかない.これはC言語入門の練習課題程度のものである.

テトリスはこうした各機能のプログラムを寄せ集めて,合計だけ見れば数百行のプログラムになっているだけである.つまり,テトリスのようなゲームであっても,結局はC言語入門程度の簡単なプログラム課題を,ただ根気よく積み上げるだけで作成可能なのである.

とにかく,挑戦してみよう(毎週1コマで6週間).

テトリスの画面

テキスト

評価方法

  • 作成プログラムによる

質問などの連絡先

2014
3/4

授業

日付 内容課題
1週目第1回 UbuntuでのC言語の開発方法,STEP1 端末の任意の場所に文字に任意の色で表示する方法 課題1と課題2
2週目第2回 STEP2 文字を時間とともに移動させる方法STEP3 ブロックのセルを落下させるようにするSTEP4セル落下プログラムの整理 課題3と課題4と課題5
3週目第3回 STEP5 ブロックを落下させるSTEP6 リアルタイムキー入力を行うSTEP7 矢印キーでブロックを左右に動かす 課題6と課題7と課題8
4週目第4回 STEP8 左右に動かしながら落下させるSTEP9 ブロックの回転STEP10 ランダムなブロック落下の繰り返し処理 課題9と課題10と課題11
5週目第5回 STEP11 ブロックの積み重ねSTEP12 ライン消滅STEP13 Next表示 課題12と課題13と課題14
6週目第6回 STEP14 得点表示と時間調整 課題15と講評