忍者ブログ

げぇむのページ

ゲームの原作や設定の公開、普段やっているゲームの日記です。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

円を描く【HTML5 JavaScript ゲーム作成 講座】5

Lesson4でキーボード入力で操作できるようにした。今回は円で敵弾を表示する。

今日の流れ
1.Lesson4をフォルダごとコピー後名前の変更をしてLesson5とする。
2.canvas.jsを変更する。
3.index.htmlを開く

1.いつもどおりコピー

2.canvas.jsを変更する。
内容

var context;
var width = 300;//画面幅
var height = 300;//画面高
var keys = new Array();//キーの状態
var char_posx;//自キャラのx座標
var char_posy;//自キャラのy座標
var char_x;//自キャラの幅
var char_y;//自キャラの高

var enemy_shot_posx;//敵弾位置
var enemy_shot_posy;//敵弾位置

window.onload = function()
{
    var canvas1 = document.getElementById('CV1');//指定したidの要素を取得

    canvas1.height = 300;//画面の高さ
    canvas1.width = 300;//画面の幅
   
    context = canvas1.getContext('2d');//描画メソッドを使用するための準備

    context.strokeStyle = "rgb(0, 0, 0)";
    context.strokeRect(0,0,height,width);//枠を描画

    char_x = 30;
    char_y = 30;

    char_posx = 135;//自キャラの初期位置
    char_posy = 270;

    enemy_shot_posx = 135;//敵弾の初期位置
    enemy_shot_posy = -10;

    draw();
}

function draw()
{
    if(keys[0] == true)
    {
        char_posx -= 5;
    }
   
    if(keys[1] == true)
    {
        char_posy -= 5;
    }

    if(keys[2] == true)
    {
        char_posx += 5;
    }
   
    if(keys[3] == true)
    {
        char_posy += 5;
    }


    //画面からキャラを出さない
    if(char_posx < 0)
    {
        char_posx = 0;
    }
    else if(char_posx > width - char_y)
    {
        char_posx = width - char_y;
    }

    if(char_posy < 0)
    {
        char_posy = 0;
    }
    else if(char_posy > height - char_y)
    {
        char_posy = height - char_y;
    }


    context.fillStyle = "rgb(255, 255, 255)";//色指定
    context.fillRect(0,0,300,300);//古い表示を消去するために上書きする:

    context.strokeStyle = "rgb(0, 0, 0)";
    context.strokeRect(0,0,300,300);//枠を描画

    context.fillStyle = "rgb(0, 0, 0)";

    enemy_shot_posy += 5;//敵弾を動かす

    if(enemy_shot_posy > height + 10)//敵弾が画面を超えたら初期位置に戻す
    {
        enemy_shot_posy = -10;
    }

     context.beginPath();//描画準備
     context.arc(enemy_shot_posx, enemy_shot_posy, 10, 0, 360 * Math.PI / 180, true);//円を描画
      context.fill();

    context.fillRect(char_posx,char_posy,char_x,char_y);//四角を描画:
   
    setTimeout(draw, 20);//指定時間毎に呼び出す
}

document.onkeypress = function(e)
{
    e.preventDefault();
}

document.onkeydown = function(e)
{

         switch(e.keyCode)
        {
            case 37:
            keys[0] = true;   
            break;

            case 38:
            keys[1] = true;       
            break;
       
            case 39:
            keys[2] = true;
            break;

            case 40:
            keys[3] = true;       
            break;

        }
}


document.onkeyup = function(e)
{

         switch(e.keyCode)
        {
            case 37:
            keys[0] = false;
            break;

            case 38:
            keys[1] = false;
            break;
       
            case 39:
            keys[2] = false;
            break;

            case 40:
            keys[3] = false;
            break;
        }

}



3.index.htmlを開く

成功していればこのようになっているはず。
画面からキャラが出ると都合が悪いので、画面端に行ったらそれ以上は動かないように調整した。
敵弾を追加。
まだ当たり判定などはない。
四角を描画するときは必要はなかったが、円を描く時などは

beginPath()というのが必要になるので注意。

拍手[0回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

フリーエリア

最新コメント

プロフィール

HN:
gamerx
性別:
非公開

バーコード

ブログ内検索