// コンストラクタ public CharaActionImage(CharacterStatus characterStatus) { // イメージの初期化 setBreedImage(characterStatus); // currentの初期値 current = currentBreed.StopImage; }
// キャラクターのアクションステータスに応じた画像を取得 public CharaImage getImage(CharacterStatus characterStatus, ActionStatus actionStatus) { setBreedImage(characterStatus); switch(actionStatus){ case ActionStatus.STOP: current = currentBreed.StopImage; break; case ActionStatus.WALK: current = currentBreed.WalkImage; break; default: current = currentBreed.StopImage; break; } return current; }
// 歩く時の処理 // image:描画イメージ public void walk(CharaImage image) { // 描画サイズの取得 Size imageSize = image.drawSize; if (arrivalFlag) { // 乱数の初期化 random = new Random(rndSeed++); // 移動できる範囲から画像の大きさを引いた値を最大値とする乱数の発生 // 左はじの座標を中心に移動させるので、表示画像の大きさ分を引く int randNum = random.Next(scopeFloor.Width - imageSize.Width); // 出た移動値が少なすぎたらもう一度 if (Math.Abs(randNum - moveChara.position.X) < this.ARRIVAL_DISTANCE) { randNum = random.Next(scopeFloor.Width - imageSize.Width); } // 移動先の設定 target = new Point(randNum, moveChara.position.Y); this.arrivalFlag = false; } //Console.WriteLine("target{0}", target); // 移動先に到着したら停止 if (Math.Abs(target.X - moveChara.position.X) < ARRIVAL_DISTANCE) { arrivalFlag = true; moveChara.setState(ActionStatus.STOP); return; } if (target.X - moveChara.position.X > 0) { // 左を向いていたら if (!image.IsRight) { // 画像を反転させる image.reverse(); } rightWalk(); } else { // 右を向いていたら if (image.IsRight) { // 画像を反転させる image.reverse(); } leftWalk(); } }
// コンストラクタ // breed:生成する種族 public CharaBreedImage(String breed) { // カレントディレクトリの取得 currentDir = System.IO.Directory.GetCurrentDirectory() + @"\pictures"; // 種族を設定 switch (breed) { case "normal": breed = NORMAL; break; case "meet": breed = MEET; break; case "vegetable": breed = VEGETABLE; break; default: breed = NORMAL; break; } // それぞれのイメージの初期化 stopImage = new CharaImage(currentDir + breed + stop); walkImage = new CharaImage(currentDir + breed + walk); }