概要 Edit

このページについて Edit

AngelScript(以下AS)を全く知らない人が,ASについてなんとなく理解してもらえるような記事を書きます。
細かいことについては各ページを参照してください。

特徴 Edit

  • 静的型付け。
  • 構文がC++にとても似ている。
  • C/C++バインディング可能。
  • コールーチン対応。

構文がC++にとても似ている Edit

構文がC++にとても似ているため,C++経験者であれば構文について少し勉強するだけでコーディングを始められます。

また,C++ソースコードをメインとして使用するプロジェクトでは
ASソースコードとC++ソースコードの2つをコーディングしていくことになります。
そのような状況で,両者の構文が似ているため,頭を大きく切り換える必要がないため,混乱が少なくて済みます。

以下がASのソースコードの例です。

すべてを展開すべてを収束
  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
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 
 
-
|
|
|
|
|
|
|
|
-
|
|
|
!
|
|
|
-
!
|
|
|
|
|
-
|
|
|
!
|
|
|
-
|
!
|
|
|
|
|
|
-
|
|
!
|
!
 
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
!
|
-
!
|
|
|
-
|
-
|
!
|
!
|
|
|
-
|
!
|
|
|
-
|
!
|
|
|
|
-
|
|
|
!
!
 
// Vector3型の宣言。
class Vector3
{
  // メンバ変数の宣言
  // public,privateなどのアクセス修飾子はありません
  float x;
  float y;
  float z;
 
  // コンストラクタ
  Vector3(float aX, float aY, float aZ)
  {
    mX = aX;
    mY = aY;
    mZ = aZ;
  }
 
  // デストラクタ
  ~Vector3()
  {
  }
  
  // メンバ関数
  void add( 
    const Vector3 &in aVec // 引数にconstや参照修飾子を付けることができます
    )
  {
    mX += aVec.x;
    mY += aVec.y;
    mZ += aVec.z;
  }
 
  // constメンバ関数もあります
  float sum()const
  {
    return mX + mY + mZ;
  }
 
  // 演算子のオーバーロードもできます
  // これは += をオーバーロードしています
  Vector3@ opAddAssign(
    const Vector3 &in aVec
    )
  {
    add( aVec );
    return this;
  }
 
}; // セミコロンはあってもなくても可能。
 
// グローバル変数
int globalInt32Value = 0;
 
// グローバル関数
void func()
{
  // 組み込み型の紹介
  int8   int8val;
  int16  int16val;
  int    int32val;
  int32  int32val2;
  int64  int64val;
  uint8  uint8val;
  uint16 uint16val;
  uint   uint32val;
  uint32 int32val2;
  uint64 uint64val;
  bool   boolVal;
  float  floatVal;
  double doubleVal;
 
  // 変数は明示的に初期化値を指定できます
  int initializedValue = 10;
 
  // 初期化値を指定しないと0(boolはfalse)で初期化されるようです
  // D言語やC#のように未初期化変数が発生しなくていい感じです
  int notInitializedValue; // 0で初期化される
 
  // if-else文が使えます
  int ifElseValue = 3;
  if ( ifElseValue == 4 )
  {
  }
  else
  {
  }
 
  // for文が使えます
  for ( int i = 0; i < 10; ++i )
  {
    if ( i < 5 )
    {
      continue; // continueが使えます
    }
    break; // breakが使えます
  }
 
  // while文が使えます
  while ( true )
  {
    break; // continue/breakが使えます
  }
 
  // do-while文が使えます
  do
  {
    break; // continue/breakが使えます
  } while( false );
 
  // switch文が使えます
  int switchVal = 2;
  switch( switchVal )
  {
  case 1  : break;
  case 2  : break;
  default : break;
  }
}

    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS