講義概要
概要説明
- 時間: 春学期水曜2時限
- 場所: 4-108
- 対象: S科2年(田村クラス)
- 担当: 田村仁(創造システム工学科)
第一班(初診者)
プログラミングの入門としてC言語を学習したものの,残念ながら今ひとつ身につかなかった.理解できなかった人に向けて,別の切り口でプログラミングを学習してみよう.最近ではIT技術者の不足からプログラマーを育成しようとオンラインのWeb上でプログラミングをインタラクティブに学習することことができるサイトが数多く作成されていいる.ここではいくつかのものを紹介するので,それらのうち自分に合いそうなサイト,興味をモテそうなサイトで学習してみよう.
ここではゲームをやりながら,楽しくプログラミング身につけてみよう.下のどれかのサイトを試してみよう.
ゲームをやりながら,ゲームを作りながらJavaScriptのオンライン学習
上記のゲーム風のプログラミング学習サイトでは,ある程度JavaScriptの知識があった方がより楽しめるだろう.ここでは完全な初心者向けのJavaScriptの学習ができるサイトを紹介する.ただしJavaScriptの学習には,HTMLとCSSの基礎知識が前提である.(「情報リテラシー」などで学修しているはずである.)
まじめにJavaScriptのオンライン学習
- ドットインストール JavaScriptなどWeb開発用のプログラミング学習用の動画サイト,動画を見ながら自分でもやってみよう.
- 体験レポート:プログラミング勉強の超定番!「ドットインストール」をやってみた
- JavaScriptなどWeb開発用のオンライン学習サイト.穴埋め問題形式で少しずつアプリを作成.
- 体験レポート:アプリも作れる!プログラミング学習サービス「CodePrep」をやってみた
- CodeStudy 人材派遣会社の大学生向けJavaScript学習コース
- 体験レポート:大学生向けプログラミング学習サービス「CodeStudy」をやってみた
参考サイト
- Game Mechanic Explorer JavaScriptゲームの定番アルゴリズムの紹介サイト (英語)
- ゲームの基本的な動作やエフェクトなどのソースコードを検索可能な「Game Mechanic Explorer」
第二班(中級者)
手軽なプログラミング言語としてJavaScriptがある.これはWebブラウザさえあればプログラム開発が可能で手っ取り早い.速度の問題があったものの,最近のPCは性能が高いため問題とならず,リアルタイムのゲームプログラミングに使用しても問題がないレベルとなっている.
ここでは300行程度のJavaScriptでシューティングゲームを作成してみよう.段階を追って説明していく.聞きながらプログラムを作成してみよう(毎週1コマで7週間).
第三班(上級者)
リアルタイムプログラミングの基礎として,リアルタイムパズルゲームの代表格であるテトリスを,C言語を用いて作成する方法について解説する詳細なテキストを配布する.C言語の基礎はわかったが,実際に何か実用的なプログラムを作成しようと思ったときに,どのように開発していくのかが分からないという人が多い.このクラスでそうした人のために,どのように考えて一からプログラムを作り上げていくのか,全手順を説明している.
ここでのテトリスは合計500行程度のプログラム量である.プログラミング初心者には大きな目標に見えるかもしれない.しかしテトリスのような一見複雑なプログラムも,「ブロックを回転させる」「揃ったラインを一つ消す」などの機能に分けて考えると,10個程度の機能からなっていることがわかる.それぞれの機能を実現するだけの単機能プログラムならば,どれも10行20行程度のプログラムでしかない.これはC言語入門の練習課題程度のものである.
テトリスはこうした各機能のプログラムを寄せ集めて,合計だけ見れば数百行のプログラムになっているだけである.つまり,テトリスのようなゲームであっても,結局はC言語入門程度の簡単なプログラム課題を,ただ根気よく積み上げるだけで作成可能なのである.
とにかく,挑戦してみよう(毎週1コマで7週間.テキストを読みながらの自習形式.もちろん自由に質問してよい).
※もしも途中でどうにもならなくなったら,第一班のテーマ試してみてもよい.
評価方法
- 作成プログラムによる
質問などの連絡先
- 居室: 4号館201室
- 在室時間:田村の在室時間
- E-mail:tamura@nit.ac.jp
授業
日付 | 回 | 内容 | 課題 |
---|---|---|---|
4/8 | 第1回 | ガイダンス・班割 | 希望調査 |
4/15 | 第2回 | 各サイトの紹介 | |
4/22 | 第3回 | オンライン学習1 | |
4/29 | 第4回 | オンライン学習2 | |
5/13 | 第5回 | オンライン学習3 | |
5/20 | 第6回 | オンライン学習4 | |
5/27 | 第7回 | 成果発表と講評 |
日付 | 回 | 内容 | 課題 |
---|---|---|---|
6/3 | 第1回 | JavaScript入門とゲームプログラムの基本型(ゲームループ)の説明 | ゲームループを作成 |
6/10 | 第2回 | 画像のロードと配置の説明 | 背景画像のスクロールを作成 |
6/17 | 第3回 | キーボード入力とキャラクターの描画 | 自機の動作プログラムの作成 |
6/24 | 第4回 | オブジェクト指向の解説と戦略ルーチンの作成 | 敵機のアルゴリズムを作成 |
7/1 | 第5回 | オブジェクトの衝突判定 | 弾幕と当たり判定の作成 |
7/8 | 第6回 | 得点計算・表示などについて説明 | ゲームの完成 |
7/15 | 第7回 | 作成ゲームの発表会 | 講評 |
日付 | 回 | 内容 | 課題 |
---|---|---|---|
9/30 | 第1回 | ガイダンス | テキスト配布 |
10/7 | 第2回 | UbuntuでのC言語の開発方法,STEP1 端末の任意の場所に文字に任意の色で表示する方法 | 課題1と課題2 |
10/14 | 第3回 | STEP2 文字を時間とともに移動させる方法STEP3 ブロックのセルを落下させるようにするSTEP4セル落下プログラムの整理 | 課題3と課題4と課題5 |
10/21 | 第4回 | STEP5 ブロックを落下させるSTEP6 リアルタイムキー入力を行うSTEP7 矢印キーでブロックを左右に動かす | 課題6と課題7と課題8 |
10/28 | 第5回 | STEP8 左右に動かしながら落下させるSTEP9 ブロックの回転STEP10 ランダムなブロック落下の繰り返し処理 | 課題9と課題10と課題11 |
11/11 | 第6回 | STEP11 ブロックの積み重ねSTEP12 ライン消滅STEP13 Next表示 | 課題12と課題13と課題14 |
11/18 | 第7回 | STEP14 得点表示と時間調整 | 課題15と講評 |
11/25 | 第8回 | STEP14 得点表示と時間調整 | 課題15と講評 |