私は信じられないほどC#に慣れていないので、ゲームをプレイしている友人を助けるために小さなアプリを構築しようとしています. これは言語を学ぶための良いプロジェクトだと思いました。
プレイヤーが MWO 用にメカを設定できるようにするフォームを作成していますが、うまくいっていますが、コードがどんどん乱雑になり、すべてが 1 つのファイルにまとめられています。私がやりたいことは、変数を独自の .cs ファイルに分割し、さまざまなメカも独自のファイルに分割することです。
私が実行している問題は、変数を独自のファイル内の新しいクラスに移動すると、クラスとすべての変数をパブリックに設定しても、残りのコードが変数を認識できなくなることです。何が間違っているのかわからないし、忘れているのはかなり単純なことだと確信していますが、一生の間、自分が間違っていることを理解することはできません.
public static class MechCommon_Fields
{
public const int NUMBER_OF_EQUIPABLE_SECTIONS = 6;
public const int NUMBER_OF_CRITICAL_SECTIONS = 8;
public const int NUMBER_OF_SECTIONS = 11;
public const int UNKNOWN_LOCATION = -1;
public const int RIGHT_ARM = 0;
public const int LEFT_ARM = 1;
public const int RIGHT_TORSO = 2;
public const int LEFT_TORSO = 3;
public const int CENTER_TORSO = 4;
public const int HEAD = 5;
public const int RIGHT_LEG = 6;
public const int LEFT_LEG = 7;
public const int RIGHT_REAR_TORSO = 8;
public const int LEFT_REAR_TORSO = 9;
public const int CENTER_REAR_TORSO = 10;
public const int BOTH_SIDE_TORSOS = 11;
public const int BOTH_ARMS = 12;
public const int NUMBER_OF_HARDPOINT_TYPES = 4;
public const int BALLISTIC = 0;
public const int ENERGY = 1;
public const int MISSILE = 2;
public const int AMS = 3;
public const int OMNI = 4;
public const int AMMO = 3;
public const int OTHER = 4;
public const int SELECTED = 5;
public const double SRM_DAMAGE = 2.5;
public const double LRM_DAMAGE = 1.8;
public const double SRM_RECYCLE = 3.5;
public const double LRM_RECYCLE = 3.25;
public const double SRM_DELAY = 0.25;
public const double LRM_DELAY = 0.5;
public const double LRM_IMPULSE = 0.8;
public const int SRM_RANGE = 270;
public const int MRM_RANGE = 450;
public const int LRM_MIN_RANGE = 180;
public const int ENHANCED_LRM_MIN_RANGE = 90;
public const int LRM_RANGE = 630;
public const int LRM_MAX_RANGE = 1000;
public const int EXTENDED_LRM_MIN_RANGE = 300;
public const int EXTENDED_LRM_RANGE = 1140;
public const int EXTENDED_LRM_MAX_RANGE = 1140;
public const int SRM_SPEED = 300;
public const int STREAK_SRM_SPEED = 200;
public const int LRM_SPEED = 100;
public const int ARTEMIS_IV_CRITICALS = 1;
public const int ARTEMIS_IV_COST = 1;
public const double ARTEMIS_IV_TONNAGE = 1.0;
public const int LASER_RANGE_MODIFIER = 2;
public const int PROJECTILE_RANGE_MODIFIER = 3;
public const int INTERNALS = 0;
public const int ARMOR = 1;
public const int INTERNALS_TOTAL = 8;
public const int ARMOR_TOTAL = 8;
public const int NUMBER_OF_MAIN_SECTION = 6;
public const int NUMBER_OF_LESSER_SECTION = 3;
public const int NUMBER_OF_MAIN_SECTION_CRITICALS = 12;
public const int NUMBER_OF_LESSER_SECTION_CRITICALS = 6;
public const int BALLISTIC_MAX_RANGE_MODIFIER = 3;
public const int ENERGY_MAX_RANGE_MODIFIER = 2;
public const int LOWER_ARM_ACTUATOR = 0;
public const int HAND_ACTUATOR = 1;
public const int UNKNOWN_ITEM_TYPE = 0;
public const int COMPONENT_ITEM_TYPE = 1;
public const int WEAPON_ITEM_TYPE = 2;
public const int AMMO_ITEM_TYPE = 3;
public const int EQUIPMENT_ITEM_TYPE = 4;
public const int HEAT_SINK_ITEM_TYPE = 5;
public const int JUMP_JET_ITEM_TYPE = 6;
public const int ARMOR_ITEM_TYPE = 7;
public const int INTERNAL_ITEM_TYPE = 8;
public const int CASE_ITEM_TYPE = 9;
public const int ENGINE_ITEM_TYPE = 10;
public const int OTHER_ITEM_TYPE = 11;
public const int TORSO = 0;
public const int ARM = 1;
public const int NUMBER_OF_MOVING_SECTIONS = 2;
public const int YAW = 0;
public const int PITCH = 1;
public const int AXIS_OF_MOVEMENT = 2;
public const double DOUBLE_HEAT_SINK_DISSIPATION = 1.4;
}
}
私は次のように変数を呼び出してみました: NUMBER_OF_EQUIPABLE_SECTIONS = 10;
と:
MechCommon_Fields.NUMBER_OF_EQUIPABLE_SECTIONS = 10;
どちらも機能せず、私はひどく困惑しています。
あなたが私に与えることができる洞察をありがとう。
わかりました、これは私が抱えている問題のより良い、より最新の例です。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MechLab
{
public class Mechs
{
public int enginePower;
public int tonnage;
public double maxEngineRating;
public int stockEngineRating;
public string weightClass;
public double maxSpeed;
public string mechChassis;
public string mechVariant;
public double speed;
public long basecost;
public int ballisticHP;
public int missileHP;
public int energyHP;
public int amsHP;
public int omniHP;
public int armorHead;
public int armorCT;
public int armorRT;
public int armorLT;
public int armorRCT;
public int armorRRT;
public int armorRLT;
public int armorRA;
public int armorLA;
public int armorRL;
public int armorLL;
public int totalArmor;
}
}
ここで、別のファイルに、これらの変数の一部を参照してフォームに表示するメソッドがあります。
public void loadMech()
{
maxSpeed = ((stockEngineRating / tonnage) * 16.2);
txtMechChassis.Text = mechChassis;
txtMechVariant.Text = mechVariant;
txtSpeed.Text = maxSpeed.ToString();
txtTonnage.Text = tonnage.ToString();
}
すべての変数に対して「現在のコンテキストには存在しません」というエラーが表示されます。