このチャレンジを使用してC


ハイフェローズ
ここでは、私たちはあなたがCの経典の基本的な知識を高めるのに役立つシンプルだが重要なプログラミングの課題について説明します.NETコンソールアプリケーション、データ型、宣言変数、定数、およびゲーム開発に重要な数学的操作.

C詰まり前

  • 変数の宣言と使用
  • 整数、floatとダブルスで計算します.
  • 入力のプロンプトと入力の取得
  • 定数と変数の宣言と使用
  • フロート付き三角法
  • 計算と丸め
  • チャレンジ説明


    ここでは、不可能な想像力を持っている.どのような場合は、古代ギリシャを訪問し、ピタゴラス、HipparCareタイムマシンを使用して満たしている.そして、あなたは現代のコンピュータとあなたが三角法とピタゴラス定理のような彼らの驚くべき数学的な理論を使って開発したゲームで彼らを訪問します.
    そのために、あなたは、C - Countプログラミング言語を使用してPythagoras定理を実装する方法を示す簡単なプログラムを示します.
    待って!ピタゴラスの定理は、批判的な定理ゲームの開発では主に2つのポイント間の距離を計算するために使用されます.

    ピタゴラスの定理


    ピタゴラスの定理は、直角三角形のHyrichuseの長さを計算する方法を教えてくれます.

    Then,

    ここでは、定理のいくつかのアプリケーションです.

    **

    チャレンジ!


    **
    次のシナリオでは、2人のプレーヤーがあると想像してください.プレイヤーは敵としてプレーヤーBで発射体を投げるしたい.
    発射投球の必要性は、プレーヤーAの位置からのプレーヤーBの方向と距離です.

    まず第一に、2つのプレーヤーの現在の位置をXのY座標として2次元デカルトの平面を想像する必要があります.

    Player A -> (point1X, point1y)
    Player B-> (point2X, point2y)


    ではC Count - scriptで実装しましょう.
    using System;
    using System.Runtime.ConstrainedExecution;
    
    namespace GameDevPythagoras
    {
        /// <summary>
        /// Pythagoras Implementation for position calculation using C#
        /// </summary>
        class Program
        {
            // declaring x and y coordinates for player positions
            static float point1X;
            static float point1Y;
            static float point2X;
            static float point2Y;
    
    そして、Cの剰余入力関数を使用して、宣言された変数の値を割り当てることができます.ここでは1行の文字列としてデータを入力します.
    プレイヤーAのXY座標とプレーヤーBのXY座標は、以下のようなスペースで区切られます.5 5 4 4また、whileループを終了するためにqを割り当てます.
    /// <param name="args">command-line args</param>
    static void Main(string[] args)
    {
        // loop while there's more input
        string input = Console.ReadLine();
        while (input[0] != 'q')
    
    次に、入力を読み込み、次の関数を使用してポイントの値を割り当てます.
    static void GetInputValuesFromString(string input)
    {
        // extract point 1 x
        int spaceIndex = input.IndexOf(' ');
        point1X = float.Parse(input.Substring(0, spaceIndex));
    
        // move along string and extract point 1 y
        input = input.Substring(spaceIndex + 1);
        spaceIndex = input.IndexOf(' ');
        point1Y = float.Parse(input.Substring(0, spaceIndex));
    
        // move along string and extract point 2 x
        input = input.Substring(spaceIndex + 1);
        spaceIndex = input.IndexOf(' ');
        point2X = float.Parse(input.Substring(0, spaceIndex));
    
        // point 2 y is the rest of the string
        input = input.Substring(spaceIndex + 1);
        point2Y = float.Parse(input);
    }
    
    前のwhileループ内で、上記の関数を呼び出して値を代入します.
    // extract point coordinates from string
    GetInputValuesFromString(input);
    
    次に、2点間の距離をフロートとして計算します.ピタゴラス定理の実装を行うために、デルタXとデルタYを2角形の2頂点として欲しい.

    次の計算を行うには、私たちはCクラスで数学のクラスを使用するつもりです.

    距離の計算

  • 数学.sqrt ->指定した数の平方根を2倍に返す.
  • 数学.pow -;指定された数の値をdoubleとして返す.
  • 数学.atan 2 -> 2つの指定された数の商が接線である角度を二重に返します.
  • そこで、次のように2人のポジション間の距離を計算します.
    float distance = (float) Math.Sqrt((Math.Pow(point1X - point2X, 2) + Math.Pow(point1Y - point2Y, 2)));
    
    基本的に何が起こるのか
    デックス=プレイヤーBのX座標等級プレーヤーAのX座標マグニチュード
    Deltay =プレイヤーBのY座標マグニチュードプレイヤーAのY座標の大きさ
    Then,

    私たちは数学を使う.2つの数を以下のようなパラメータとすることによるPOWメソッド

    Math.Pow (double x, double y);
    double x = A double-precision floating-point number to be raised to a power.
    double y = A double-precision floating-point number that specifies a power.
    _


    私たちは数学を使う.パラメータとして平方根を計算するのに必要な数を与えることによるsqrtメソッド.
    そして、計算された倍の値をfloat(float)でfloatに変換します.

    角の計算


    我々は数学を使用する必要が角度を計算する.接頭辞が2つの指定された数の商である角を返すatan 2メソッド.
    double angle = (float)Math.Atan2(point2Y - point1Y, point2X - point1X);
    
    これは角度の放射的な値を返すので、それを度に変換して進む必要があります.
    angle *= (float)180/Math.PI;   //angle = angle * (float)180/Math.PI
    
    数学.円周率の円周率の比を表します.π=π≈ 3.14159
    次に、コンソールを使用して計算の答えを出力します.ドットネットのWriteLineメソッド.
    Console.WriteLine("The Distance Between Player A and B is " + (float) Math.Round(distance, 6));
    Console.WriteLine("The Angle from Player A to Player B is " + (float)Math.Round(angle, 5) + " degrees");
    input = Console.ReadLine();
    
    テストケースです.


    ソースコードを見ることができます。


    using System;
    using System.Runtime.ConstrainedExecution;
    
    namespace GameDevPythagoras
    {
        /// <summary>
        /// Pythagoras Implementation for position calculation using C#
        /// </summary>
        class Program
        {
            // declaring x and y coordinates for player positions
            static float point1X;
            static float point1Y;
            static float point2X;
            static float point2Y;
    
    
            /// <param name="args">command-line args</param>
            static void Main(string[] args)
            {
                // loop while there's more input
                string input = Console.ReadLine();
                while (input[0] != 'q')
                {
                    // extract point coordinates from string
                    GetInputValuesFromString(input);
    
                    // calculate distance between points 1 and 2
                    float distance = (float) Math.Sqrt((Math.Pow(point1X - point2X, 2) + Math.Pow(point1Y - point2Y, 2)));
    
                    double angle = (float)Math.Atan2(point2Y - point1Y, point2X - point1X);
    
                    angle *= (float)180/Math.PI;
    
                    Console.WriteLine("The Distance Between Player A and B is " + (float) Math.Round(distance, 6));
                    Console.WriteLine("The Angle from Player A to Player B is " + (float)Math.Round(angle, 5) + " degrees");
                    input = Console.ReadLine();
    
    
                }
            }
    
            /// <summary>
            /// Extracts point coordinates from the given input string
            /// </summary>
            /// <param name="input">input string</param>
            static void GetInputValuesFromString(string input)
            {
                // extract point 1 x
                int spaceIndex = input.IndexOf(' ');
                point1X = float.Parse(input.Substring(0, spaceIndex));
    
                // move along string and extract point 1 y
                input = input.Substring(spaceIndex + 1);
                spaceIndex = input.IndexOf(' ');
                point1Y = float.Parse(input.Substring(0, spaceIndex));
    
                // move along string and extract point 2 x
                input = input.Substring(spaceIndex + 1);
                spaceIndex = input.IndexOf(' ');
                point2X = float.Parse(input.Substring(0, spaceIndex));
    
                // point 2 y is the rest of the string
                input = input.Substring(spaceIndex + 1);
                point2Y = float.Parse(input);
            }
        }
    }
    
    そこで、このガイドでは、ゲーム開発のためのプログラミング入門プログラムを初心者として紹介しました.
    ありがとう.