Kuina-chan

くいなちゃん2018年12月11日


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

1gameライブラリ

ゲーム制作に便利な機能を集めたライブラリ「game.kn」を解説します。
gameライブラリは、コンパイルオプションの実行環境が「wnd(ウインドウアプリ)」のときのみ使用可能です。
名前 説明
game@ChipInfo マップチップの情報クラス
game@ChipInfo.backFriction 背景の摩擦係数のプロパティ
game@ChipInfo.flowX 横方向の流れの加速度のプロパティ
game@ChipInfo.flowY 縦方向の流れの加速度のプロパティ
game@ChipInfo.fluidFriction 流体の摩擦係数のプロパティ
game@ChipInfo.repulsion 衝突時の反発係数のプロパティ
game@ChipInfo.shape マップチップの形状のプロパティ
game@ChipInfo.solidFriction 衝突時の摩擦係数のプロパティ
game@Direction 方向を表す列挙型
game@Map マップクラス
game@Map.find マップチップを検索するメソッド
game@Map.get マップチップを取得するメソッド
game@Map.set マップチップを設定するメソッド
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@Roll 時間に応じて出来事を起こすクラス
game@Roll.proceed 時間を進めるメソッド
game@Roll.reset 時間をリセットするメソッド
game@Shape マップチップの形状を表す列挙型
game@hitMapRect マップと四角形の衝突判定をする関数
game@hitRectRect 四角形と四角形の衝突判定をする関数
game@makeMap マップをファイルから作成する関数
game@makeMapEmpty マップを空の状態で作成する関数
game@makeRoll 時間に応じて出来事を起こすクラスをファイルから作成する関数

2game@ChipInfo

「game@ChipInfo」は、マップチップの情報クラスです。

2.1game@ChipInfo.backFriction



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

var backFriction: float

2.2game@ChipInfo.flowX



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

var flowX: float

2.3game@ChipInfo.flowY



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

var flowY: float

2.4game@ChipInfo.fluidFriction



「game@ChipInfo.fluidFriction」は、流体の摩擦係数のプロパティです。

var fluidFriction: float

2.5game@ChipInfo.repulsion



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

var repulsion: float

2.6game@ChipInfo.shape



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

var shape: game@Shape

2.7game@ChipInfo.solidFriction



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

var solidFriction: float

3game@Direction

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

4game@Map

「game@Map」は、マップクラスです。

4.1game@Map.find



「game@Map.find」は、マップチップを検索するメソッドです。

4.2game@Map.get



「game@Map.get」は、マップチップを取得するメソッドです。

4.3game@Map.set



「game@Map.set」は、マップチップを設定するメソッドです。

5game@Rect

「game@Rect」は、四角形クラスです。

5.1game@Rect.height



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

var height: float

5.2game@Rect.hitBottom



「game@Rect.hitBottom」は、四角形が下に衝突しているかどうかのプロパティです。

5.3game@Rect.hitLeft



「game@Rect.hitLeft」は、四角形が左に衝突しているかどうかのプロパティです。

5.4game@Rect.hitRight



「game@Rect.hitRight」は、四角形が右に衝突しているかどうかのプロパティです。

5.5game@Rect.hitTop



「game@Rect.hitTop」は、四角形が上に衝突しているかどうかのプロパティです。

5.6game@Rect.move



「game@Rect.move」は、四角形を速度に応じて移動させるメソッドです。

5.7game@Rect.update



「game@Rect.update」は、四角形の衝突を反映させるメソッドです。

5.8game@Rect.veloX



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

var veloX: float

5.9game@Rect.veloY



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

var veloY: float

5.10game@Rect.width



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

var width: float

5.11game@Rect.x



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

var x: float

5.12game@Rect.y



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

var y: float

6game@Roll

「game@Roll」は、時間に応じて出来事を起こすクラスです。

6.1game@Roll.proceed



「game@Roll.proceed」は、時間を進めるメソッドです。

6.2game@Roll.reset



「game@Roll.reset」は、時間をリセットするメソッドです。

7game@Shape

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

8game@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 マップチップの情報を返す関数

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

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

9game@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 衝突時の摩擦係数
戻り値 衝突した方向

10game@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型の任意の値が指定できます。

11game@makeMapEmpty

「game@makeMapEmpty」は、マップを空の状態で作成する関数です。

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

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

12game@makeRoll

「game@makeRoll」は、時間に応じて出来事を起こすクラスをファイルから作成する関数です。
1544533944jaf