ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript と codeguppy.com の簡単な紹介

JavaScript と codeguppy.com の簡単な紹介

Patricia Arquette
リリース: 2024-11-15 01:06:02
オリジナル
196 人が閲覧しました

Quick intro to JavaScript and codeguppy.comJavaScript は最も汎用性の高いプログラミング言語の 1 つであり、クリエイティブなコーディング、ゲーム開発、Web 開発の中核ツールです。初心者でも、知識を新たにしたい場合でも、このガイドでは JavaScript の基本的な概念を簡単に概説し、基礎を固めるのに役立つように設計されています。また、初心者向けのオンライン コーディング プラットフォームである codeguppy.com を活用してスキルを練習する方法も学びます。変数からループ、関数まで、この記事ブックは JavaScript をすぐに始めるためのリファレンスとして役立ちます。

目次

第 1 章: JavaScript 構文

  • 変数
  • if ステートメント
  • For ループ
  • while ループ
  • Do While ループ
  • Switch ステートメント
  • 機能
  • 配列メソッド
  • 文字列メソッド
  • 乱数
  • モジュール

第 2 章: JavaScript を使用してキャンバスに描画する

  • キャンバスについて
  • キャンバスをクリアする
  • 背景色
  • 図形を描く
  • 形状設定
  • カメのグラフィック
  • 角度
  • アニメーション

第 3 章: ユーザー入力

  • keyPressed イベント
  • keyリリースイベント
  • keyTyped イベント
  • mouseClicked イベント
  • mousePressed イベント
  • マウスリリースイベント
  • mouseMoved イベント
  • mouseDragged イベント
  • ダブルクリックイベント
  • マウスホイールイベント
  • キーが押されました
  • キー
  • キーコード
  • マウスX
  • マウスY
  • pmouseX
  • マウスY
  • マウスが押されました
  • マウスボタン
  • keyIsDown()
  • keyWentDown()

第 4 章: codeguppy.com を使用した JavaScript ゲーム開発

  • レイヤーの描画
  • 背景画像の設定
  • 組み込みスプライトの読み込み
  • カスタム スプライトの読み込み
  • アニメーション化されたカスタム スプライトをロードしています
  • スプライトの位置を設定する
  • スプライトを自動的に移動する
  • スプライトのミラーリング
  • スプライトの回転
  • スプライトを自動的に回転します
  • 描画深度
  • アニメーションの変更
  • スプライト上のマウス イベント
  • スプライトを非表示にする
  • スプライトの削除
  • スプライトの衝突
  • スプライトグループ
  • BGM
  • 効果音
  • シェイプ間の衝突
  • ゲームループ
  • アセットのプリロード
  • シーンを表示しています
  • 入場イベント
  • シーンにデータを渡す

第 5 章: その他のコーディングのヒント

  • データの印刷
  • データ入力 UI の構築

第 1 章: JavaScript 構文

JavaScript 構文を調べることから記事を始めましょう。

変数の宣言

変数は、数値、文字列 (テキスト)、さらには複雑なオブジェクトなどのデータを保存するために使用されます。覚えておいてください:

  • プログラム内には変数をいくつでも含めることができます。
  • 各変数には、保存するデータを表す名前を付ける必要があります。
  • 同じコード ブロック内 (例: { ... } の間にあるもの) または関数内でも変数に異なる名前を付けます

変数xを宣言する

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

xを宣言し、数値で初期化する

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

s を宣言し、文字列で初期化します。

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

変数への値の代入

変数が let で宣言されると、必要に応じて何度でも別の値を割り当てたり再割り当てしたりできます。

単純な定数を使用して代入することも、定数、他の変数、さらには同じ変数を含む複雑な式を使用して代入することもできます。コンピューターは式の評価に非常に優れています。

変数 x に数値 100 を代入します

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列「Hello」を変数 s に代入する

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

空の配列を変数 ar に代入します

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

3 つの数値の配列を変数 ar に代入します。

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

2 つの文字列の配列を変数 ar に代入します

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

インラインオブジェクトを変数oに代入します。

o = {   Type: 'car', 
        x : 100, 
        y : 200 
    };
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

変数の合計は a b に等しい

sum = a + b;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

式を変数 avg に代入する

avg = (a + b) / 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

変数の合計が 10 増加します (新しい合計は古い合計 10 になります)

sum = sum + 10;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

変数 i が 1 増加 (インクリメント) されます。

i++;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

変数 i が 2 ずつ増加します

i += 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

if ステートメント

if ステートメントは、プログラムのフローを制御するのに最適です。通常、プログラムは一度に 1 命令ずつ上から下に実行されます。

条件が満たされた場合に決定を下し、一連の命令を実行できる場合。

条件が true の場合、{} の間の命令ブロックを実行します

if (mouseX < width)
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

条件が true の場合は命令の最初のブロックを実行し、そうでない場合は 2 番目のブロックを実行します。

if (hour < 12)
{

}
else
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

異なる条件に基づいて異なるブロックを実行する

次の例では、最初の条件が true の場合、最初のブロックが実行され、他のブロックは実行されません。

ただし、最初の条件が true でない場合は、else if を使用して別の条件がテストされ、true の場合はその else if のブロックが実行されます。

最後の else の後のブロックは、その時点まで他の条件が真でなかった場合にのみ実行されます。

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: この種の式では複数の else if ブロックを使用できます。

for ループ

for ループと println を使用して 0 から 4 までの数値を出力します。

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

for ループを使用して 10 から 0 までの数値を出力します。

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

0から100までの偶数を出力します

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列のすべての要素を出力します

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

while ループ

while ループを使用して 0 から 9 までの数字を出力します。

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

しながらやる

do while ループを使用して 0 から 10 までの数値を出力します。

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: do while ループはコード ブロックの後に条件を配置するため、条件が false の場合でもブロックは少なくとも 1 回実行できます。

switch ステートメント

switch ステートメントは、プログラムの流れを制御するための if / else if とは別の命令です。 switch を使用すると、式をさまざまな値と比較し、その式が任意の case 値と等しいかどうかに基づいて、対応する一連の命令を実行できます。

通常、switch は if / else if / else よりも使用頻度は低くなります。

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

機能

関数は、プログラム内で何度も使用できる新しい言語命令を作成するのに最適です。

新しい命令を定義すると、それは JavaScript や codeguppy.com に存在する組み込み命令と区別できなくなります

関数バルーンの定義と呼び出し

o = {   Type: 'car', 
        x : 100, 
        y : 200 
    };
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

値を返す関数

sum = a + b;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: codeguppy.com には、circle、rect などの多数の組み込み関数が含まれています。これらの関数は、独自のカスタム関数を呼び出すのと同じ方法で呼び出すことができます。

配列メソッド

配列を使用すると、単一の変数名を使用して一連の値を簡単に保存できます。配列には、その要素を操作できるプロパティとメソッドがあります。

ar を宣言して空の配列に初期化する

avg = (a + b) / 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ar を 3 つの数値の配列として宣言して初期化する

sum = sum + 10;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列の長さ

i++;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列の最後に要素を追加します

i += 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列の先頭に要素を挿入します

if (mouseX < width)
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

任意の位置に要素を挿入

if (hour < 12)
{

}
else
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

任意の位置に要素を挿入(イージーモード)

注: 配列挿入メソッドは codeguppy.com にのみ存在します

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列の要素 2 の値を読み取ります

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列の要素の合計を計算する

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列のすべての要素に異なる値を代入する

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

最初の要素にアクセスする

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

最後の要素へのアクセス

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

最後の要素にアクセスする (簡単な方法)

注: ピーク配列メソッドは codeguppy.com にのみ存在します

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列の最初の要素を削除します

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列の最後の要素を削除します

o = {   Type: 'car', 
        x : 100, 
        y : 200 
    };
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

任意の位置の要素を削除します

sum = a + b;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列のすべての要素を削除します

avg = (a + b) / 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

2 つの配列を連結する

sum = sum + 10;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列のスライスを抽出する

slice() は、配列から「スライス」を抽出するために使用できる興味深いメソッドです。 「スライス」は独立した配列として返されます。このメソッドは、スライス内に必要な最初の要素のインデックス (これを含む) と最後の要素のインデックス (これを含まない) を引数として受け取ります:

i++;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列の要素を結合する

i += 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列メソッド

配列と同様に、文字列内の独立した文字にアクセスして操作できます。

文字列の長さ

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列のすべての文字を反復する

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

位置による文字列文字へのアクセス

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

テキストを大文字に変換する

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

テキストを小文字に変換する

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列に別の部分文字列が含まれているかどうかを判断する

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列が指定されたプレフィックスで始まるかどうかを判断します

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列が指定された接尾辞で終わるかどうかを判断します

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

部分文字列の位置を見つけます。先頭から検索が始まります

o = {   Type: 'car', 
        x : 100, 
        y : 200 
    };
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

部分文字列の位置を見つけます。指定したインデックスから検索を開始します。

sum = a + b;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列から部分文字列を抽出します

avg = (a + b) / 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列の先頭と末尾から空白を削除します

sum = sum + 10;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列の先頭から空白を削除する

i++;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列の末尾から空白を削除します

i += 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列の先頭を別の文字列で埋めます

if (mouseX < width)
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字列の末尾を別の文字列で埋めます

if (hour < 12)
{

}
else
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

文字コード

if (minute <= 15)
{
}
else if(minute <= 30)
{
}
else
{
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

コードからの文字

for(let i = 0; i < 5; i++)
{
    println(i);
}
ログイン後にコピー
ログイン後にコピー

乱数

乱数はコーディングに非常に役立ちます。

JavaScript で 0 (両端を含む) と 1 (両端を含まない) の間の乱数を取得するには、Math.random() 関数を使用できます。

for(let i = 10; i >= 0; i--)
{
    println(i);
}
ログイン後にコピー
ログイン後にコピー

codeguppy.com は、優先範囲内の乱数をすばやく選択できる追加の手順により、乱数のサポートを拡張します。

0 ~ 1 のランダムな浮動小数点数 (1 は含まれません)

これは Math.random() と同じです

for(let i = 0; i <= 100; i+=2)
{
    println(i);
}
ログイン後にコピー
ログイン後にコピー

0 から n までのランダムな浮動小数点数 (n は含まれません)

let ar = [10, 20, 30];

for(let element of ar)
{
    println(element);
}
ログイン後にコピー
ログイン後にコピー

n1 と n2 の間のランダムな浮動小数点数 (n2 は含まれません)

let i = 0;

while(i < 10)
{
    println(i);
    i++;
}
ログイン後にコピー
ログイン後にコピー

最小値と最大値の間のランダムな int (両方を含む)

randomInt または randomNumber を使用できます

let i = 0;

do
{
    println(i);
    i++;
}
while(i < 10)
ログイン後にコピー

chr1 と chr2 の間のランダムな文字 (両方を含む)

関数randomChar(chr1, chr2)

switch(myExpresion)
{
    case 100:
        //...
        break;
    case 200:
        //...
        break;
    case 300:
        //...
        break;
    default:
        //...
}
ログイン後にコピー

配列のランダムな要素

// Function balloon draws a balloon using simple shapes such as circle and line
// It expects as arguments the coordinates for balloon center and the color of the balloon
function balloon(x, y, shapeColor)
{
    let r = 30;
    let stringLen = 100;

    fill(shapeColor);
    stroke(shapeColor);

    circle(x, y, r);
    line(x, y + r, x, y + r + stringLen);
}

// Call function balloon with different parameters
balloon(100, 100, "red");
balloon(300, 300, "blue");
balloon(500, 200, "yellow");
ログイン後にコピー

配列をシャッフルする

function addNumbers(x, y)
{
    return x + y;
}

// Call a function
var sum = addNumbers(100, 200);
println(sum);
ログイン後にコピー

モジュール

特に大規模なプログラムでコードをより適切に整理するために、codeguppy.com ではモジュールの概念を導入しています。

プログラムのすべての関数を 1 つのコード ページに記述する代わりに、プログラムを複数のコード ページに分割し、各コード ページをモジュールにすることができます。

モジュールは、内部で定義された変数と関数に対して強力なカプセル化を提供します。このカプセル化により、異なるモジュールで同じ名前の関数/変数を定義できるようになります。

モジュール内の関数を使用するには、まずそのモジュールを要求する必要があります。

メインプログラム

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

モジュール MathUtils コンテンツ

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: コード ページのもう 1 つの用途は、ゲーム シーンを定義することです。 codeguppy.com にはゲーム シーン マネージャーが組み込まれています。詳細については、ゲーム開発の記事を参照してください。

第 2 章: JavaScript を使用してキャンバスに描画する

codeguppy.com は、デカルト グラフィックとタートル グラフィックの両方を使用したグラフィック ベースのアクティビティに最適な環境です。

キャンバスについて

codeguppy.com では、グラフィカル キャンバスは 800 x 600 ピクセルです。
システムは、幅と高さの変数をキャンバスの寸法で自動的に初期化します

(可能な限り) 定数をハードコーディングする代わりに、プログラム内でこれらの変数を使用することをお勧めします。

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

キャンバスをクリアする

clear() は、描画キャンバスをクリアするために使用されます。この関数は、loop() イベント内のアニメーションで、次の描画の前にフレームをクリアするのに非常に役立ちます。

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

背景色

background コマンドは、キャンバスの背景色を設定するために使用されます。

?バックグラウンドコマンドは、キャンバス上に描画された図形を消去しません。キャンバスを消去するには、代わりにclear()を使用してください。

背景色を文字列として指定された組み込みの色に設定します。

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

背景色を 16 進数の「#RRGGBB」文字列として指定された色に設定します。

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

背景色をグレー色 (0 - 黒、255 - 白) に設定します。

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: codeguppy.com では、画像も背景として設定できます。画像を背景として設定する方法の詳細については、「ゲーム」ページを参照してください。

図形の描画

座標 400 x 300、半径 200 ピクセルの円を描画します。

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

座標 400 x 300、幅と高さ 300 x 200 ピクセルの楕円を描画します。

o = {   Type: 'car', 
        x : 100, 
        y : 200 
    };
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

左上隅の座標が 400 x 300、幅と高さが 300 x 200 ピクセルの長方形を描画します。

sum = a + b;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

座標 400 x 300 と 500 x 500 の間に線を引きます

avg = (a + b) / 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

各角の座標を指定して三角形を描画します

sum = sum + 10;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

円弧を描く

円弧を描くには、楕円の場合と同様に座標 (中心位置、幅、高さ) を指定し、さらに開始角度と終了角度を指定します。

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

座標 400 x 300 に点を描画します

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

JavaScript のテキストを 400 x 300 の座標で描画します

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

形状の設定

注: 一度設定すると、これらの設定はキャンバス上に描画されるすべての連続した形状に適用されます

テキストのサイズを 20 に設定します

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

図形を塗りつぶす色を「マゼンタ」に設定

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

図形を描く色を「ティール」に設定

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

線の太さを2pxに設定します

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

塗りつぶし色を使用せずに空の図形を描画します

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

輪郭を持たずに図形を描く

o = {   Type: 'car', 
        x : 100, 
        y : 200 
    };
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

タートルグラフィックス

codeguppy.com では、デカルト グラフィックとタートル グラフィックを組み合わせることができます。

タートル グラフィックスを使用する場合、デフォルトのタートル (初心者および通常のプログラムに推奨) を使用することも、追加のタートルを作成することもできます (複雑なプログラムの場合)。

デフォルトの Turtle の操作

デフォルトのタートルを使用するには、次のグローバル命令を使用するだけです。

デフォルトのタートルをホームポジションにリセットします

sum = a + b;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

デフォルトのタートルのペンの色を赤に設定します

avg = (a + b) / 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

デフォルトのタートルのペン サイズを 2 に設定します。

sum = sum + 10;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

紙の上にペンを置きます。亀が絵を描きます。

i++;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

紙からペンを立てます。カメは進みますが、引きません

i += 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

タートルをキャンバス上の任意の位置に移動します

if (mouseX < width)
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

デフォルトのタートルを指定された角度だけ左に回転させます

if (hour < 12)
{

}
else
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

デフォルトのタートルを右に 30 度回転させます

if (minute <= 15)
{
}
else if(minute <= 30)
{
}
else
{
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

タートルの向き(方向)を任意の角度に設定します

for(let i = 0; i < 5; i++)
{
    println(i);
}
ログイン後にコピー
ログイン後にコピー

指定されたピクセル数だけタートルを前方に移動します。

注: タートルは、left、right、または setHeading で事前に設定された方向に移動します。ペンが紙の上にあると、カメが絵を描きます。

for(let i = 10; i >= 0; i--)
{
    println(i);
}
ログイン後にコピー
ログイン後にコピー

指定されたピクセル数だけタートルを後方に移動します。

注: タートルは前進とは逆の方向に移動します

for(let i = 0; i <= 100; i+=2)
{
    println(i);
}
ログイン後にコピー
ログイン後にコピー

デフォルトのタートルの x 位置と y 位置を 2 つの数値の配列として取得します。

let ar = [10, 20, 30];

for(let element of ar)
{
    println(element);
}
ログイン後にコピー
ログイン後にコピー

デフォルトのタートルの方向を度単位で取得します

let i = 0;

while(i < 10)
{
    println(i);
    i++;
}
ログイン後にコピー
ログイン後にコピー

複数のタートルを操作する

複雑なプログラムでは、それぞれのタートルが位置、色などの独自の状態を維持するため、複数のタートルを操作すると便利な場合があります。

複数のタートルを作成する

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

デフォルトのタートルを入手する

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記の例で見られるように、codeguppy.com ではユーザーがさまざまな方法で色を指定できます。このようにして、プログラムに最も便利な方法を使用できます。

名前付きの色

codeguppy.com には、事前定義された名前を持つさまざまな色があります。「背景」パレットですべてを探索できます。

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

RGB / HTML スタイルの色

事前に定義された色では不十分な場合は、赤、緑、青の量を指定して任意の色を作成できます。 #RRGGBB 形式を使用して、これらの色を文字列として塗りつぶし関数とストローク関数に渡すことができます:

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

クイックグレーカラー

グレーの色合いをすばやく作成する必要がある場合は、塗りつぶしやストロークなどの色を期待する関数に 0 ~ 255 の数値を渡すだけです

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

color() 関数を使用した色

カラーを作成するもう 1 つの方法は、カラー関数と R、G、B のマウントを使用することです。これらの金額の範囲は 0 ~ 255

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

HSBモードへの変更

デフォルトでは、codeguppy.com カラー システムは RGB モードを使用しており、色は R、G、B のマウントによって指定されます (上記のように)。
ただし、上級ユーザーは、色相、彩度、明度で色を指定する HSB モードに切り替えることができます。

HSB モードでは、カラー関数の値は 0 ~ 360 の範囲にあります

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

RGB モードに戻す

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

角度

すべての三角関数、および円弧などの特定の描画関数は角度を処理します。

若いプログラマーや初心者にアピールするために、codeguppy.com のすべての角度はデフォルトで「DEGREES」になっています。

ただし、上級ユーザーは angleMode を使用して「RADIANS」モードに切り替えることができます。 RADIANS での作業が終了したら、必ず「DEGREES」に戻すことを忘れないでください。

o = {   Type: 'car', 
        x : 100, 
        y : 200 
    };
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

三角関数の使用

codeguppy.com は、p5.js ライブラリを介して、sin、cos などの一連の使いやすい三角関数をユーザーに提供します。

sum = a + b;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

アニメーション

アニメーションを実装するために、codeguppy.com は、「漫画」で使用される方法と同様の方法をユーザーに提供します。つまり、アニメーションを一連のフレームとして考えてください。最初のフレームを描画し、それを消去して少し異なる位置に 2 番目のフレームを描画するということを繰り返すだけです。

loop() はアニメーションの基礎です

codeguppy.com では、loop() 関数が特別です。コードでこの関数を定義するだけで、codeguppy.com エンジンが 1 秒あたり最大 60 回実行します。自分で呼び出す必要はありません。

画面上の水平線を移動します

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

画面上で円をバウンスさせる

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

デフォルトのフレームレートを変更する

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

フレームレートを取得する

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

第 3 章: ユーザー入力

キーボード/マウスのユーザー入力を codeguppy.com プログラムに取得するには、主に 2 つの方法があります。イベント経由、または組み込みシステム変数と関数を読み取って、loop() 関数経由です。

イベント

codeguppy.com エンジンは、キーボードまたはマウスのイベントが発生したときにプログラムに通知できます。プログラム内で適切な関数 (イベント ハンドラーなど) を定義するだけで、イベントが発生したときにシステムが自動的にその関数を呼び出します。

keyPressイベント

キーが押されたときに 1 回実行します

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

keyリリースイベント

キーが放されたときに実行します

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

keyTypedイベント

特殊キーを除いてキーが入力されたときに実行します

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウスクリックイベント

マウスを押して放したときに 1 回実行します

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウス押下イベント

マウスボタンが押されたときに 1 回実行します

o = {   Type: 'car', 
        x : 100, 
        y : 200 
    };
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウスリリースイベント

マウスボタンを放したときに実行します

sum = a + b;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウス移動イベント

マウスが移動され、ボタンが押されていないときに実行されます

avg = (a + b) / 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウスドラッグイベント

マウスを動かし、a ボタンを押すと実行します

sum = sum + 10;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ダブルクリックイベント

マウスをダブルクリックすると実行します

i++;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウスホイールイベント

ユーザーがマウスホイールまたはタッチパッドを使用したときに実行します

i += 2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

システム変数

イベントのほかに、システムはいくつかのシステム変数に適切なイベント データを自動的に設定します。

これらの変数には、イベント ハンドラー内から、またはメインのアニメーション/ゲーム ループ()内からアクセスできます。

これは通常、ゲームを構築するときにユーザー入力を取得するための推奨される方法です。

キーが押されました

キーが押されたかどうかを示すブール型システム変数。

if (mouseX < width)
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

最後に入力されたキーを含むシステム変数。

if (hour < 12)
{

}
else
{

}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

キーコード

最後に押されたキーのコードを含むシステム変数。

数値キー コードの代わりに次の定数を使用できます: LEFT_ARROW、RIGHT_ARROW、UP_ARROW、DOWN_ARROW。引用符なしで使用してください。

if (minute <= 15)
{
}
else if(minute <= 30)
{
}
else
{
}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: keyCode を見つけるには、テスト プログラムを作成するか、keycode.info などのサイトを使用できます。

マウスX

マウス カーソルの水平座標を含むシステム変数。

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ねずみ

マウスカーソルの垂直座標を含むシステム変数

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

pmouseX

マウス カーソルの前の水平座標を含むシステム変数

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウスY

マウス カーソルの以前の垂直座標を含むシステム変数。

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウスが押されました

マウス ボタンが押されたかどうかを示すブール型システム変数。
どのボタンが押されたかを検出するには、mouseButton 変数をチェックします。

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マウスボタン

押されたマウス ボタンを含むシステム変数。 LEFT、RIGHT、CENTER のいずれかの値を持ちます。

マウスが押されたかどうかを検出するには、mouseIsPressed をチェックします。

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

機能

keyIsDown()

loop() イベント内で keyIsDown() 関数を使用して、指定されたキーが押されたかどうかを検出します。キーコードを指定する必要があります。

数値キー コードの代わりに次の定数を使用できます: LEFT_ARROW、RIGHT_ARROW、UP_ARROW、DOWN_ARROW。引用符なしで使用してください。

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: キーコードを見つけるには、keycode.info などのサイトを使用できます

keyWentDown()

keyWentDown() も、loop() イベントを対象としており、keyIsDown() に似ています。

違いは、この関数はキーが押されるごとに 1 回だけ true を返すことです。機能を再トリガーするには、ユーザーはキーを放してもう一度押す必要があります:

/i/code.html?hints/userinput_10

第 4 章: codeguppy.com を使用した JavaScript ゲーム開発

codeguppy.com を使用すると、ゲーム開発が非常に簡単で楽しいです。このシステムには背景画像、スプライト、音楽、サウンドエフェクトが組み込まれているため、アセットを検索するのではなくコードに集中できます。

描画レイヤー

codeguppy.com には階層化された描画アーキテクチャがあります。次の図に示すように、キャンバスの上には常に最大 5 つの描画レイヤーがあります:

Quick intro to JavaScript and codeguppy.com

エンジンはすべてのレイヤーを自動的に結合し、最終的な画像を画面に表示します。

背景画像の設定

背景コマンドは、次のように、キャンバスの背景色を設定する方法として「描画」セクションにも記載されていました。

ar = ["A", "B"];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ただし、background コマンドでは、単色を背景として設定するだけではありません。

同じ関数を使用して、codeguppy.com ライブラリの任意の画像を背景として設定できます。

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

?背景を画像に設定するには、「背景」パレットを開き、コードエリアに画像をドラッグ&ドロップします。システムが適切なコードを作成します。

背景コマンドは、上の図に示されているように、背景レイヤーに画像を設定します。この方法では、背景画像は、clear() 命令や図形描画命令、あるいはスプライトによっても消去されたり、変更されたりすることはありません。

スプライト

スプライトは、コードを通じてロードして操作できる、アニメーション化されることが多い小さな画像です。スプライトはゲームを成功させるために不可欠な要素です。

codeguppy.com には、組み込みスプライトの大きなライブラリが含まれており、同時にユーザーにカスタム スプライトを定義する機能も提供します。

内蔵スプライトの読み込み

sprite コマンドを使用して、組み込みライブラリから任意のスプライトをロードできます。

スプライトの読み込み

スプライト命令は、組み込みのスプライト プレーンをロードし、画面の中央に配置します。

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

?スプライト パレットを開き、含まれているすべての組み込みスプライトを参照します。気に入ったものが見つかったら、それをコード エディターにドラッグ アンド ドロップすると、システムが自動的にコードを作成します。

スプライトの読み込みと配置

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

スプライトのロードとスケーリング

次のコード スニペットでは、スプライト プレーンは画面の中央に配置される前に 0.5 に呼び出されます

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

スプライトのロード、位置決め、スケーリング

次のコード スニペットでは、スプライト プレーンは画面の中央に配置される前に 0.5 に呼び出されます

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

スプライトの特定のアニメーションをロードする

マルチアニメーション スプライトの場合、. を使用してスプライト名と同じ文字列にデフォルトのアニメーションを含めることで、ロード時にデフォルトのアニメーションを指定できます。シンボル (例: plan.shoot)

? 「スプライト」パレットのスプライトの上にマウスを置くと、各スプライトでどのようなアニメーションがサポートされているかを確認できます。ツールチップに表示される情報を確認してください。

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: 複数のアニメーションを含むスプライトの場合、スプライト .show() メソッドを使用して、表示されるアニメーションを後から変更することもできます。

カスタム スプライトの読み込み

カスタム グラフィックスが必要なゲームの場合、ユーザーは追加のカスタム スプライトをコード内で直接定義できます。 codeguppy.com は、最大 16 色の​​カスタム スプライトに Microsoft MakeCode Arcade 形式を使用します。

テキストから画像へ

文字列テンプレート内で、または関数として img を使用して、カスタム スプライト テキストを画像に変換します。

/i/code.html?hints/gamedev_10

画像からスプライトまで

カスタム スプライトは、sprite コマンドを使用してロードすることもできます。この方法で、残りの組み込みスプライトと同様にそれらを操作できます:

/i/code.html?hints/gamedev_20

アニメーション化されたカスタム スプライト

カスタム スプライトもアニメーション化できます。アニメーション化されたスプライトが必要な場合は、スプライトごとに複数のフレーム イメージを作成する必要があります:

/i/code.html?hints/gamedev_30

複数のアニメーションを含むカスタム スプライト

カスタム スプライトに複数のアニメーションをパックすることもできます。これは、スプライト .show() メソッドを使用して後でアニメーションを変更するのに役立ちます:

/i/code.html?hints/gamedev_40

カスタムスプライト用のカスタムパレット

プログラムで異なる色が必要な場合は、setPalette を使用してカスタム パレットを定義できます。

/i/code.html?hints/gamedev_41

注: getPalette() 関数を使用していつでも現在のパレットを取得できます。

スプライトのプロパティの操作

実行時、カスタム スプライトは組み込みスプライトと区別できません。スプライトをどのようにロード/作成したかに関係なく、コードを通じて同じ方法でスプライトを操作できます。

スプライト コマンドは、メソッドとプロパティを呼び出すことができるオブジェクトへの参照を返しています。

スプライトの位置を設定する

スプライト コマンドはスプライト オブジェクトへの参照を返しています。 .x プロパティと .y プロパティを使用して、画面上のスプライトの位置を更新します。

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

スプライトを自動で動かす

.x 座標と .y 座標を自分で変更する代わりに、適切な .velocity の値を指定することで、エンジンがスプライトを x 軸または y 軸上で自動的に移動させることができます。

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

スプライトのミラーリング

場合によっては、.x 軸または .y 軸でスプライトを反転する必要があります。

スプライトをミラーリングするには、引数として -1 を指定した .mirror メソッドを使用します。元の方向にミラーリングするには、引数として 1 を使用します。

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

スプライトの回転

特定のゲームやプログラムでは、スプライトを任意の角度で回転したい場合があります。これを行うには、回転角度を指定できる .rotation プロパティを使用します。

スプライトを自動的に回転させる

スプライトを無期限に自動的に回転させたい場合は、 .rotationSpeed プロパティに 0 より大きい値を指定して、スプライトを自動回転させることができます。

/i/code.html?hints/gamedev_50

描画深さ

通常、新しく追加されたスプライトは、以前のスプライトの上に描画されます。

どのスプライトを上に描画し、どのスプライトを後ろに描画するかを制御するには、. Depth プロパティを使用できます。深度が低いスプライトは、深度が高いスプライトの後ろに描画されます。

グラフィカル API (円、四角形など) を使用して描画された古典的な形状のスプライトを結合することもできます。

スプライトをグラフィック プレーンの背後に表示したい場合は、スプライトに負の深さを与えるようにしてください。そうしないと、スプライトはグラフィック プレーンの上に描画されます。

アニメーションの変更

選択したスプライトに複数のアニメーションが含まれている場合は、アニメーション名を . で追加することで、最初に表示するアニメーションを指定できます。最初のパラメータの文字列内:

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ただし、後から .show メソッドを使用してそのスプライトのアニメーションを変更できます。

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

?スプライト パレットのスプライトのサムネイルにマウスを移動して、スプライトでサポートされているアニメーションを注意深く確認してください。

スプライト上のマウスイベント

次のスプライト プロパティにイベント ハンドラー (関数など) を割り当てることで、スプライト上のマウス クリックを検出できます。

  • .onMousePressed
  • .onMouseリリース
  • .onMouseOver
  • .onMouseOut

/i/code.html?hints/gamedev_51

スプライトを非表示にする

スプライトは 2 つの方法で非表示にできます:

  • .visible プロパティを false に設定します
  • .x および/または .y 座標を表示可能なキャンバスの外側に設定する
let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

スプライトの削除

プログラムからスプライトを完全に削除するには、スプライトで .remove() メソッドを使用します。これは、破壊した敵や収集したアイテムなどと同様に、スプライトにも役立ちます。

.life プロパティを使用して、特定のフレーム数の後にスプライトを自動削除することもできます。これは、弾丸やロケットなど、撃ったまま忘れてしまったオブジェクトに便利です。収集品はこのプロパティを利用できます。デフォルトでは、このプロパティの値は -1 (無効) です。

/i/code.html?hints/gamedev_55

スプライトの衝突

スプライトが衝突しているかどうかを確認するには 4 つの異なる方法があります:

  • sprite.collide(ターゲット, コールバック);
  • sprite.displace(ターゲット, コールバック);
  • sprite.overlap(ターゲット, コールバック);
  • sprite.bounce(ターゲット、コールバック);

呼び出されると、これらのメソッドの一部は自動的にスプライトを移動させ、その他はスプライトの軌道に影響を与えます。これらはすべて、衝突が発生したかどうかを示すブール値を返します。

これらのメソッドを試して、その動作を確認してください。

パラメータ:

  • target – これは、他のスプライトまたはスプライトのグループへの参照です (グループについては後で詳しく説明します)
  • callback – これはオプションですが、場合によっては便利です。 Callback は次のシグネチャを持つ関数で、衝突が発生した場合に自動的に呼び出されます。
x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: スプライト間、またはスプライトと他のシェイプ間の衝突をチェックする別の方法は、次のシェイプ衝突関数を使用することです。

スプライトグループ

同じ種類の複数のスプライトを使用するゲームでは、new Group() で作成された 1 つのグループにさまざまなスプライトをグループ化すると便利な場合があります

グループの主なメソッドは次のとおりです:

  • .add(sprite) - グループにスプライトを追加します
  • .remove(sprite) – グループからスプライトを削除します
  • .clear() - グループからスプライトを削除します。プログラムからスプライトを削除しません。
  • .contains(sprite) - 指定されたスプライトがグループ内にあるかどうかを確認します

/i/code.html?hints/gamedev_60

注: スプライト衝突メソッドなどの特定のメソッドは、(前のページで説明したように) 単一のスプライトではなく、スプライトのグループ全体に対して動作できます。

バックグラウンドミュージック

レインボーという名前の音楽をかけて

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: 以前に音楽が再生されていた場合、音楽命令は新しい音楽を再生する前にそれを中断します。

「Fun Background」という名前の音楽を音量 0.1 で再生します。

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

? 「音楽とサウンド」パレットを使用して音楽を見つけてください。気に入った曲が見つかったら、その曲をコード領域にドラッグ アンド ドロップします。システムが適切なコードを作成します。

効果音

サウンドを再生する zap1

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

注: システムは、sound コマンドでトリガーされたすべてのサウンドを並行して再生します。

? 「音楽とサウンド」パレットを使用して効果音を見つけてください。気に入った曲が見つかったら、その曲をコード領域にドラッグ アンド ドロップします。システムが適切なコードを作成します。

シェイプ間の衝突

?ゲームでスプライトのみを使用している場合は、スプライト衝突メソッドを使用することをお勧めします。

ただし、スプライトを使用していない場合、またはスプライトを通常のシェイプと組み合わせて使用​​している場合は、次の方法を使用して衝突を検出できます。これらは 2 つの図形のパラメータを引数として受け取り、2 つの図形が衝突する場合は true を返します。

注: 便宜上、一部の命令は、形状を逆に記述する引数を使用して 2 回定義されています。

点と円の衝突を検出

次のいずれかの命令を使用して、点と円の間の衝突を検出します。

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

/i/code.html?hints/gamedev_61

点と線の衝突を検出

次の 2 つの命令のいずれかを使用して、点と線の間の衝突を検出します。

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

/i/code.html?hints/gamedev_62

点と長方形の間の衝突を検出する

次の 2 つの命令のいずれかを使用して、点と四角形の間の衝突を検出します。

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

/i/code.html?hints/gamedev_63

2 つの円間の衝突を検出する

2 つの円間の衝突を検出するには、次の命令を使用します:

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

/i/code.html?hints/gamedev_64

円と四角形の衝突を検出する

円と四角形の間の衝突を検出するには、次の 2 つの命令のいずれかを使用します。

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

/i/code.html?hints/gamedev_65

2 つの長方形間の衝突を検出する

2 つの長方形間の衝突を検出するには、次の命令を使用します。

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

/i/code.html?hints/gamedev_66

2 つの線間の衝突を検出する

次の命令を使用して 2 つの線間の衝突を検出します。

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

/i/code.html?hints/gamedev_67

直線と長方形の間の衝突を検出する

次の 2 つの命令のいずれかを使用して、線と四角形の間の衝突を検出します。

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

/i/code.html?hints/gamedev_68

ゲームループ

事実上すべてのゲームでは、「ゲーム ループ」を定義する必要があります。これは、ユーザー入力を継続的に取得し、ゲームの状態を更新し、ゲーム グラフィックスをレンダリングする特別な関数です。

codeguppy.com では、loop() 関数を使用して「ゲーム ループ」を簡単に実装できます。これは、「アニメーション」セクションの「描画」ページで説明されている機能と同じです。コード内でこの関数を定義するだけで、codeguppy.com エンジンが 1 秒あたり最大 60 回実行します。自分で呼び出す必要はありません。

ゲームがスプライトのみを使用している場合

画面上でキャラクターを動かすには、キーボードを読み取り、loop() 内でキャラクターの状態 (位置など) を更新します

/i/code.html?hints/gamedev_70

ゲームでスプライトとシェイプを使用している場合

ゲームで古典的なシェイプも使用している場合は、ループ関数内でそれらを再レンダリングする必要があります。スプライトは、プロパティを変更すると自動的にレンダリングされます。

/i/code.html?hints/gamedev_80

ゲームを一連のフレームとして考えてください。まず最初のフレームを描画し、それを消去して、少し異なる位置に 2 番目のフレームを描画する、というように続けていきます。

アセットのプリロード

codeguppy.com エンジンは、実行前にコードを自動的にスキャンして、ロードする必要があるアセット (背景、スプライト、音楽、効果音など) を特定します。エンジンは、使用した対応する背景、スプライト、音楽、サウンド コマンドを調べることでこれらを識別します。

これらのコマンドでアセットを定数として指定しない場合は、preload 関数を使用して必要なアセットをプリロードする必要があります。必要なアセットをすべてカンマ区切りでリストするだけです:

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マルチシーンゲーム

マルチシーン ゲームの構築のサポートは、codeguppy.com 環境の主なハイライトの 1 つです。

ゲームにシーンを追加すると、ゲームがより洗練されたものになります。一般的なゲームでは、ゲームのプレイ方法を説明する「イントロ」シーン、実際の「ゲーム」シーン、ゲーム終了後にお祝いの言葉やスコアを表示する「おめでとう」シーンを作成するとよいでしょう。

各シーンは新しいコード ページで作成されます。コード ページは後で参照する必要があるため、必ず適切な名前を付けてください。

シーンを表示する

プログラムが開始されると、常に定義した最初のシーンが実行されます。他のシーンを表示するには、showScene メソッドを使用する必要があります:

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

エントリーイベント

シーンに enter という名前の関数が含まれている場合、シーンが入力または表示されると、エンジンはこの関数を自動的に実行します。一般的なゲームでは、ゲーム中にシーンが複数回表示されることがあります。たとえば、ユーザーが「イントロ」シーンからゲームを再開するたびに、「ゲーム」シーンが表示されます。

これにより、シーンの状態を適切に設定できるようになります。

注: 関数外の緩いコードはシーンごとに 1 回だけ実行されます。シーンを連続して表示しても、そのコードはトリガーされなくなります。

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

シーンにデータを渡す

場合によっては、showScene メソッドを介してデータをシーンに渡すと便利です。たとえば、ゲームのオプションを「Intro」シーンから「Game」シーンに渡したり、プレーヤーのスコアを「Game」シーンから「Congrats」シーンに渡すことができます。

「おめでとう」シーンに数字(スコアなど)を渡す

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

「Congrats」シーン内で、この渡されたデータを次の方法で取得できます:

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

複雑な構造を「Congrats」シーンに渡す

s = "Hello";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

「Congrats」シーン内で、この渡されたデータを次の方法で取得できます:

ar = [];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

さらに読む

codeguppy.com でスプライトを操作する方法をより深く理解するには、次のチュートリアルを参照してください。

  • 組み込みのスプライト プレイグラウンドとチュートリアルを使用する
  • カスタム スプライトのプレイグラウンドとチュートリアルの操作

第 5 章: その他のコーディングのヒント

codeguppy.com は、アルゴリズムの練習や、基本的なデータ入力 UI を備えたプログラムの実装にも使用できます。この記事では、この種のプログラムのサポートについて説明します。

印刷データ

print 命令と println 命令を使用して、数字、文字列、その他の情報をキャンバス上にすばやく印刷します。これらの手順は、別のスクロール可能なテキスト レイヤーで動作します。

これらの手順は、プログラムのデバッグや、言語要素やアルゴリズムの練習に最適です。

0 から 9 までの数字を出力します

ar = [1, 2, 3];
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

最初の 10 個の素数を出力します

/i/code.html?hints/other_10

注: println は各印刷の後に改行文字を追加しますが、print は追加しません。

データ入力UIの構築

codeguppy.com では、データ入力ユーザー インターフェイスを作成するための簡単な手順を提供しています。

入力ボックスの作成

単一行の入力ボックスを作成するには、createEdit 命令を使用して、コントロールの位置と幅を指定します。

let x;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

複数行の入力ボックスを作成するには、高さも指定する必要があります。高さパラメータを省略すると、システムは自動的に単一行の入力ボックスを構築します。

let x = 1;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

createEdit 命令は編集ボックス オブジェクトへの参照を返していることに注意してください。次のプロパティを使用して、編集ボックスの内容を操作できます。

  • .text
  • .readonly
  • .visible
  • .width
  • .身長
  • .onchange

例:

let s = "Hello, World!";
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ボタンの作成

UI レイヤーで作成できるもう 1 つの UI 要素は、通常のプッシュ ボタンです。

x = 100;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

createButton 命令は、作成されたボタン オブジェクトへの参照を返します。この参照を使用して、次のようなプロパティにアクセスできます。

  • .text
  • .visible
  • .無効
  • .width
  • .身長
  • .onclick

例:

https://codeguppy.com/code.html?hints/other_20


JavaScript は、インタラクティブで動的なアプリケーションを構築するために不可欠なツールであり、その中心となる概念を理解することが、この強力な言語を習得するための第一歩です。このガイドでは、JavaScript の主要な基礎を紹介し、変数、ループ、関数などについての迅速で実践的なリファレンスを提供します。 codeguppy.com で練習することで、学習者は新たに得た知識をコーディング演習に直接適用し、実践的な経験を通じて理解を深めることができます。 JavaScript の探索を続けるときは、一貫した練習と実験が熟練してクリエイティブなコーディングの可能性を最大限に引き出す鍵であることを忘れないでください。

以上がJavaScript と codeguppy.com の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート