・GameCanvasの機能:今週使う変数、メソッド ・新規のメソッドはありません。
前回、apkが作れなかった人、xcodeを用いてうまく実機で動かせなかったmax&iOSユーザーは、前回の課題の問題解決から始めましょう。 「課題の進め方」 ※今回は第9回なので、フォルダはk09に改名してください。 サンプルの起動を確認し、スクリプトが編集できる状態になったら、 続きを読み進めてください。
(クラスに入った直後)に変数の宣言を足す
    int pointer_start_x;
    int pointer_start_y;
    int pointer_dx;
    int pointer_dy;
    int old_pointer_count = 0;
    int swipe_dir=0;
    int swipe_dir_last = 0;
    const int NO_DIR = 0;
    const int DIR_UP = 1;
    const int DIR_DOWN = 2;
    const int DIR_RIGHT = 3;
    const int DIR_LEFT = 4;
    const int SWIPE_DIST = 30;
(InitGame()の中)に初期化処理を足す
        gc.SetResolution(720,1280);
(UpdateGame()の中)に下記の行を足す
        CalcSwipe();
DrawGame()の中に下記の行を記載
       gc.ClearScreen();
        // 黒の文字を描画します
        gc.SetColor(0, 0, 0);
        gc.SetFontSize(36);
        gc.DrawString("DIR:"+swipe_dir,0,0);
        gc.DrawString("LAST:"+swipe_dir_last,0,40);
クラスを閉じるかっこの手前にメソッドを追加
void CalcSwipe(){
        if(gc.GetPointerFrameCount(0)==1){
            pointer_start_x = (int)gc.GetPointerX(0);
            pointer_start_y = (int)gc.GetPointerY(0);
        }
        if(gc.GetPointerFrameCount(0)>0){
            pointer_dx = (int)gc.GetPointerX(0)-pointer_start_x;
            pointer_dy = (int)gc.GetPointerY(0)-pointer_start_y;
        }
        swipe_dir = NO_DIR; 
        if(gc.PointerCount == 0 && old_pointer_count ==1 ){
        
            if(pointer_dx * pointer_dx > pointer_dy * pointer_dy){
                if(pointer_dx > SWIPE_DIST){
                    swipe_dir = DIR_RIGHT;
                }
                else if(pointer_dx < -SWIPE_DIST){
                    swipe_dir = DIR_LEFT;
                }
            }
            else {
                if(pointer_dy > SWIPE_DIST){
                    swipe_dir = DIR_DOWN;
                }
                else if(pointer_dy < -SWIPE_DIST){
                    swipe_dir = DIR_UP;
                }
            }
        } 
        old_pointer_count = gc.PointerCount;
        if(swipe_dir != NO_DIR){
            swipe_dir_last = swipe_dir;
        }
}
第2回のカードの文字列表示を参考に作成しましょう。
string[] dir_name = {"NO DIR","UP","DOWN","RIGHT","LEFT"};
gc.DrawString(dir_name[swipe_dir_last],0,80);
などを適宜追加します。
//追加で用意する変数
//GameStateSub:ゲーム内の処理の切り分けを行う
//(0:ラウンド表示中、1:お題提示中、2:成功、3:失敗、4:終了)
//count:汎用カウンター
//round:何ラウンド目かを保存
//target_dir:お題の方向を保存
//score:得点
//変数宣言に追加
    int GameStateSub = 0;
    int count = 0;
    int round = 0;
    int target_dir=0;
    int score = 0;
//initGame内に追加
//updateGameの中
        if(GameStateSub == 0){
            count++;
            if(count == 180){
                GameStateSub = 1;
                count =0;
                target_dir = gc.Random(1,4);
            }
        }
        else if(GameStateSub == 1){
            count++;
            if(swipe_dir!=NO_DIR){
                if(swipe_dir == target_dir){
                    GameStateSub = 2;
                    score += 300-count; 
                    count = 0;
                }
                else {
                    GameStateSub = 3;
                    score -= 500;
                    count = 0;
                }
            }
        }
        
        else if(GameStateSub == 2 || GameStateSub ==3){
            count++;
            if(count > 180){
                round++;
                if(round >=10){
                    GameStateSub = 4;
                    count = 0;
                }
                else {
                    GameStateSub=0;
                    count = 0;
                }
            }
        }
//DrawGameの中
//テスト表示
        gc.DrawString("STATESUB:"+GameStateSub,0,160);
        gc.DrawString("COUNT:"+count,0,200);
        gc.DrawString("ROUND:"+round,0,240);
        gc.DrawString("TARGET:"+target_dir,0,280);
        gc.DrawString("SCORE:"+score,0,320);
        gc.SetFontSize(48);
        if(GameStateSub==0){
            gc.DrawString("ROUND:"+(round+1),320,600);
            gc.DrawString("READY!",320,650);
        }
        else if(GameStateSub==1){
           gc.DrawString(dir_name[target_dir],360,640);     
        }
        else if(GameStateSub==2){
           gc.DrawString("SUCCESS",360,640);    
        }
        else if(GameStateSub==3){
           gc.DrawString("FAIL",360,640);  
        }
        else if(GameStateSub==4){
            gc.DrawString("FINISHED!",360,600); 
            gc.DrawString("SCORE:"+score,360,650);  
        }
より良くする案を考えてみましょう。
プログラムが間違っていてビルドエラーが出ている可能性が高いです。
エディタ上でbuildしてみましょう。
{}の対応が間違っていないか、全角スペースが入っているかなど、確認してみましょう