2017-02-22 2 views
-1

最初に、私はjavascriptを初めて使っています。
私はゲームのいくつかの番号を追跡するためにウェブページを構築しようとしています。
このゲームでは、キャラクターの統計情報を2つのセクションに分けて記録しています。
私はStatsを呼び出すためのPHPスクリプトを用意しており、入力ボックスを使ってそれらを調整しています。また、(1)基本統計(強さ、敏捷性...)と2)それらが変更されたときにそれらを追加するJavaScriptコード。これは8つのStatsでうまく動作しますが、それぞれの関数(getStrength、getDexterity ...)は、それらを合計して表示するgetTotal関数で記述されています。javascriptで関数を動的にビルドするには

150個の別々の機能(getDrive、get sword、painting ...)を書くことなく、150個のスキル(それぞれ〜15個のスキルを持つ〜10個のカテゴリ)に対して同様のプロセスを使用したいと思います。 私はスキルデータベースからのリスト。必要な機能を作成するためにこれをループすることはできますか?

+0

ループ内で関数を作成することは可能です。あなたのケースでは、あなたのコードが何であるかを知ることが必要です。 –

+0

しないでください。配列とオブジェクトをコンテナとして使用し、オブジェクトとプロパティまたはインデックスの名前を渡す一般的な.get()関数を記述します。そうすれば、1つの機能だけではなく、1つの機能ごとに機能することができます。 – Shilly

+1

私はあなたがループを必要とするとは思わない。 e関数のパラメータとしてカテゴリとスキルを渡す必要があるように思えます。あなたのロジックを1つの機能の中に置きます。 –

答えて

0

これは私がそのようなものをコード化する方法です。このアプローチには欠点もありますが(それほど細かくはありません)、少なくとも同じ機能を持つ200個の関数を定義する必要はありません:

var Charcter = function Character(name) { 
    this.id = { 
     'name' : name, 
     'class' : 'ranger', 
     'level' : 1 
    } 
    this.stats = { 
     'str' : 10, 
     'dex' : 18, 
     'con' : 14, 
     'int' : 10, 
     'wis' : 16, 
     'cha' : 16 
    }; 
    this.skills = [ 
     'archery', 
     'horsemanship' 
    ]; 
}; 
Character.prototype = { 
    'get' : function get(subType, fieldName) { 
     return this[subType][fieldName]; 
    } 
}; 

var shilly = new Character('shilly'); 

console.log('I am a ' + shilly.get('id', 'class') + ' of level ' + shilly.get('id', 'level')); 
console.log('My second skill is ' + shilly.get('skills', 1) + '.'); 
+0

ああ、私はそれを使う方法を見ていると思います。すべてのスキルの合計(実際にはカテゴリ別の乗数を使用)を合計する必要があるため、このスキルをすべてキャラクタ定義で記述して呼び戻します。 –

関連する問題