トップへ
田村研究室

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

Subject Solving Technology

2014
3/4

講義概要

概要説明

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

第一班(初診者)

プログラミングの入門としてC言語を学習したものの,残念ながら今ひとつ身につかなかった.理解できなかった人に向けて,別の切り口でプログラミングを学習してみよう.最近ではIT技術者の不足からプログラマーを育成しようとオンラインのWeb上でプログラミングをインタラクティブに学習することことができるサイトが数多く作成されていいる.ここではいくつかのものを紹介するので,それらのうち自分に合いそうなサイト,興味をモテそうなサイトで学習してみよう.

ここではゲームをやりながら,楽しくプログラミング身につけてみよう.下のどれかのサイトを試してみよう.

ゲームをやりながら,ゲームを作りながらJavaScriptのオンライン学習
  • CodeCombat - Learn how to code by playing a game RPGキャラの動作プログラムをJavaScriptで作成,経験値をかせぎ,アイテムをゲットしよう.
  • プログラミングしないと攻撃できないWebゲーム「CodeCombat」が、JS入門の神サイトになる!
  • FightCode - Killing Robots for FunJavaScriptで遊べるロボット対戦コンテスト.英語版だが下記紹介サイトで遊び方の説明あり.基本的に単純なので英語でもなんとかなる.
  • JavaScript版カルネージハートこと「FIGHT CODE」
  • あそべるプログラミング hackforplay バグのあるアクションRPGゲームのプログラムを改造して動くようにしよう.
  • ハックするしかないゲーム「hackforplay」 - フタパパ
  • CodinGame: Games for programmersいわゆるディフェンスゲーム.自キャラの動作をプログラムして敵を防げ.(JavaScriptだけでなくC++など他の言語にも対応)英語版だが下記紹介サイトで遊び方の説明あり.
  • プログラミングの勉強を本気でWebゲーム化した「CodinGame」が時間泥棒確定!
  • code.9leap.netゲームプログラミングに特化したオンライン学習できるサービス.他と違ってゲームを遊ぶ形で(普通の)プログラムを学修するのではなく,ゲーム専用のプログラムを学修する.やや上級.
  • 「code.9leap.net」をやってみた!ゲームプログラミングを学ぶサイト
  • 上記のゲーム風のプログラミング学習サイトでは,ある程度JavaScriptの知識があった方がより楽しめるだろう.ここでは完全な初心者向けのJavaScriptの学習ができるサイトを紹介する.ただしJavaScriptの学習には,HTMLとCSSの基礎知識が前提である.(「情報リテラシー」などで学修しているはずである.)

    まじめにJavaScriptのオンライン学習
    参考サイト

    第二班(中級者)

    手軽なプログラミング言語としてJavaScriptがある.これはWebブラウザさえあればプログラム開発が可能で手っ取り早い.速度の問題があったものの,最近のPCは性能が高いため問題とならず,リアルタイムのゲームプログラミングに使用しても問題がないレベルとなっている.

    ここでは300行程度のJavaScriptでシューティングゲームを作成してみよう.段階を追って説明していく.聞きながらプログラムを作成してみよう(毎週1コマで7週間).

    第三班(上級者)

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

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

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

    とにかく,挑戦してみよう(毎週1コマで7週間.テキストを読みながらの自習形式.もちろん自由に質問してよい).

    ※もしも途中でどうにもならなくなったら,第一班のテーマ試してみてもよい.

    テトリスの画面

    評価方法

    • 作成プログラムによる

    質問などの連絡先

    2015
    3/5

    授業

    日付 内容課題
    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と講評