Kuina-chan

くいなちゃん2018年08月20日


プログラミング言語Kuin」の言語仕様305、「gameライブラリ」についてです。

gameライブラリ

ゲーム制作に便利な機能を集めたライブラリ「game.kn」を解説します。
gameライブラリは、コンパイルオプションの実行環境が「wnd(ウインドウアプリ)」のときのみ使用可能です。
gameライブラリに用意されているものはgameライブラリの通りです。
gameライブラリ
名前 説明
game@hitMapRect マップと四角形の衝突判定をする関数
game@hitRectRect 四角形と四角形の衝突判定をする関数
game@makeMap マップをファイルから作成する関数
game@makeMapEmpty マップを空の状態で作成する関数
game@makeRoll 時間に応じて出来事を起こすクラスをファイルから作成する関数
game@ChipInfo マップチップの情報クラス
game@Direction 方向を表す列挙型
game@Map マップクラス
game@Rect 四角形クラス
game@Roll 時間に応じて出来事を起こすクラス
game@Shape マップチップの形状を表す列挙型

game@hitMapRect

「game@hitMapRect」はマップと四角形の衝突判定をする関数です(game@hitMapRect関数の定義)。
game@hitMapRect関数の定義

 func hitMapRect(map: game@Map, rect: game@Rect, chipInfoCallback: func<(int, game@ChipInfo)>, hitCallback: func<(int, int, game@Direction)>)

map マップ
rect 四角形
chipInfoCallback マップチップの情報を返す関数
「chipInfoCallback」に渡すコールバック関数の実装はchipInfoCallbackコールバック関数の実装の通りです。
chipInfoCallbackコールバック関数の実装

 func 関数名(chip: int, info: game@ChipInfo)

chip マップチップの種類
info マップチップの情報

game@hitRectRect

「game@hitRectRect」はマップと四角形の衝突判定をする関数です(game@hitRectRect関数の定義)。
game@hitRectRect関数の定義

 func hitRectRect(rect1: game@Rect, rect2: game@Rect, weight1: float, weight2: float, repulsion: float, solidFriction: float): game@Direction

rect1 四角形1
rect2 四角形2
weight1 四角形1の質量
weight2 四角形2の質量
repulsion 衝突時の反発係数
solidFriction 衝突時の摩擦係数
戻り値 衝突した方向

game@makeMap

「game@makeMap」はファイルからマップを作成する関数です(game@makeMap関数の定義)。
game@makeMap関数の定義

 func makeMap(path: []char, chipWidth: float, chipHeight: float): game@Map)

path マップデータが書かれたファイル
chipWidth 1つのマップチップの幅
chipHeight 1つのマップチップの高さ
戻り値 マップクラスのインスタンス
マップデータのファイルの書式は、カンマおよび改行区切りで先頭から順に「1行あたりのマップチップの個数w」「1列あたりのマップチップの個数h」「マップチップ(0,0)」「マップチップ(1,0)」「マップチップ(2,0)」…「マップチップ(w-1,0)」「マップチップ(0,1)」…「マップチップ(w-1,h-1)」です。 マップチップにはint型の任意の値が指定できます。

game@makeMapEmpty

「game@makeMapEmpty」は空のマップを作成する関数です(game@makeMapEmpty関数の定義)。
game@makeMapEmpty関数の定義

 func makeMapEmpty(mapWidth: int, mapHeight: int, chipWidth: float, chipHeight: float): game@Map)

mapWidth 1行あたりのマップチップの個数
mapHeight 1列あたりのマップチップの個数
chipWidth 1つのマップチップの幅
chipHeight 1つのマップチップの高さ
戻り値 マップクラスのインスタンス
各マップチップの値は「0」に設定されます。

game@makeRoll

game@ChipInfo

「game@ChipInfo」はマップチップの情報を扱うクラスで、定義はgame@ChipInfoクラスの定義の通りです。
game@ChipInfoクラスの定義
名前 説明
game@ChipInfo.backFriction 背景の摩擦係数
game@ChipInfo.flowX 横方向の流れ
game@ChipInfo.flowY 縦方向の流れ
game@ChipInfo.fluidFriction 流体の摩擦係数
game@ChipInfo.repulsion 衝突時の反発係数
game@ChipInfo.shape マップチップの形状
game@ChipInfo.solidFriction 衝突時の摩擦係数

game@ChipInfo.backFriction

「game@ChipInfo.backFriction」は背景の摩擦係数のプロパティです(game@ChipInfo.backFrictionプロパティの定義)。
game@ChipInfo.backFrictionプロパティの定義

 var backFriction: float

game@ChipInfo.flowX

「game@ChipInfo.flowX」は横方向の流れの加速度のプロパティです(game@ChipInfo.flowXプロパティの定義)。
game@ChipInfo.flowXプロパティの定義

 var flowX: float

game@ChipInfo.flowY

「game@ChipInfo.flowY」は縦方向の流れの加速度のプロパティです(game@ChipInfo.flowYプロパティの定義)。
game@ChipInfo.flowYプロパティの定義

 var flowY: float

game@ChipInfo.fluidFriction

「game@ChipInfo.fluidFriction」は空気や水中などの流体の摩擦係数のプロパティです(game@ChipInfo.fluidFrictionプロパティの定義)。
game@ChipInfo.fluidFrictionプロパティの定義

 var fluidFriction: float

game@ChipInfo.repulsion

「game@ChipInfo.repulsion」は衝突時の反発係数のプロパティです(game@ChipInfo.repulsionプロパティの定義)。
game@ChipInfo.repulsionプロパティの定義

 var repulsion: float

game@ChipInfo.shape

「game@ChipInfo.shape」はマップチップの形状のプロパティです(game@ChipInfo.shapeプロパティの定義)。
game@ChipInfo.shapeプロパティの定義

 var shape: game@Shape

game@ChipInfo.solidFriction

「game@ChipInfo.solidFriction」は衝突時の摩擦係数のプロパティです(game@ChipInfo.solidFrictionプロパティの定義)。
game@ChipInfo.solidFrictionプロパティの定義

 var solidFriction: float

game@Direction

「game@Direction」は方向を表す列挙型で、定義はgame@Direction列挙型の定義の通りです。
game@Direction列挙型の定義
名前 説明
%bottom
%left
%none 方向なし
%right
%top

game@Map

「game@Map」はマップを扱うクラスで、定義はgame@Mapクラスの定義の通りです。
game@Mapクラスの定義
名前 説明
game@Map.find マップチップを検索する
game@Map.get マップチップを取得する
game@Map.set マップチップを設定する

game@Map.find

game@Map.get

game@Map.set

game@Rect

「game@Rect」は四角形を扱うクラスで、定義はgame@Rectクラスの定義の通りです。
game@Rectクラスの定義
名前 説明
game@Rect.height 四角形の高さ
game@Rect.hitBottom 四角形が下に衝突しているかどうか
game@Rect.hitLeft 四角形が左に衝突しているかどうか
game@Rect.hitRight 四角形が右に衝突しているかどうか
game@Rect.hitTop 四角形が上に衝突しているかどうか
game@Rect.move 四角形を速度に応じて移動させる
game@Rect.update 四角形の衝突を反映させる
game@Rect.veloX 四角形の速度X
game@Rect.veloY 四角形の速度Y
game@Rect.width 四角形の幅
game@Rect.x 四角形の位置X
game@Rect.y 四角形の位置Y

game@Rect.height

「game@Rect.height」は四角形の高さのプロパティです(game@Rect.heightプロパティの定義)。
game@Rect.heightプロパティの定義

 var height: float

game@Rect.hitBottom

game@Rect.hitLeft

game@Rect.hitRight

game@Rect.hitTop

game@Rect.move

game@Rect.update

game@Rect.veloX

「game@Rect.veloX」は四角形の速度Xのプロパティです(game@Rect.veloXプロパティの定義)。
game@Rect.veloXプロパティの定義

 var veloX: float

game@Rect.veloY

「game@Rect.veloY」は四角形の速度Yのプロパティです(game@Rect.veloYプロパティの定義)。
game@Rect.veloYプロパティの定義

 var veloY: float

game@Rect.width

「game@Rect.width」は四角形の幅のプロパティです(game@Rect.widthプロパティの定義)。
game@Rect.widthプロパティの定義

 var width: float

game@Rect.x

「game@Rect.x」は四角形の位置Xのプロパティです(game@Rect.xプロパティの定義)。
game@Rect.xプロパティの定義

 var x: float

game@Rect.y

「game@Rect.y」は四角形の位置Yのプロパティです(game@Rect.yプロパティの定義)。
game@Rect.yプロパティの定義

 var y: float

game@Roll

game@Shape

「game@Shape」はマップチップの形状を表す列挙型で、定義はgame@Shape列挙型の定義の通りです。
game@Shape列挙型の定義
名前 説明
%none 空白
%oneWayBottom 下方向への一方通行
%oneWayLeft 左方向への一方通行
%oneWayRight 右方向への一方通行
%oneWayTop 上方向への一方通行
%rect 四角形
%triLeftBottom 左下が斜辺の三角形
%triLeftTop 左上が斜辺の三角形
%triRightBottom 右下が斜辺の三角形
%triRightTop 右上が斜辺の三角形
1534704758ja