Beispiel #1
0
        public Kinoko(string imageKinoko)
        {
            // キノコの画像をメモリに読み込んでおく(描画の度に読み込むと遅いので)。
            this.kinoko = new DrawableObject(imageKinoko);

            this.kinoko.Scale     = 0.2;
            this.kinoko.PositionX = 500;
            this.kinoko.PositionY = Convert.ToInt32(600 - (this.kinoko.Height * this.kinoko.Scale / 2));
        }
Beispiel #2
0
        /// <summary>
        /// マリオ
        /// </summary>
        /// <param name="imageName1">立ちマリオ画像</param>
        /// <param name="imageName2">歩きマリオ画像1</param>
        /// <param name="imageName3">歩きマリオ画像2</param>
        /// <param name="imageName4">ジャンプマリオ画像</param>
        public Mario(string imageName1, string imageName2, string imageName3, string imageName4)
        {
            // マリオの画像をメモリに読み込んでおく(描画の度に読み込むと遅いので)。
            this.mario      = new DrawableObject(imageName1);
            this.marioWalk1 = new DrawableObject(imageName2);
            this.marioWalk2 = new DrawableObject(imageName3);
            this.marioJump  = new DrawableObject(imageName4);

            this.mario.Scale     = 0.2;
            this.mario.PositionX = 100;
            this.mario.PositionY = Convert.ToInt32(600 - (this.mario.Height * this.mario.Scale / 2));

            this.marioWalk1.Scale     = 0.2;
            this.marioWalk1.PositionX = 100;
            this.marioWalk1.PositionY = Convert.ToInt32(600 - (this.marioWalk1.Height * this.marioWalk1.Scale / 2));

            this.marioWalk2.Scale     = 0.2;
            this.marioWalk2.PositionX = 100;
            this.marioWalk2.PositionY = Convert.ToInt32(600 - (this.marioWalk2.Height * this.marioWalk2.Scale / 2));

            this.marioJump.Scale     = 0.2;
            this.marioJump.PositionX = 100;
            this.marioJump.PositionY = Convert.ToInt32(600 - (this.marioJump.Height * this.marioWalk1.Scale / 2));
        }
Beispiel #3
0
        /// <summary>
        /// 描画情報の更新
        /// </summary>
        public void Update(bool autoFlag, int randValue)
        {
            // キーの取得
            int left  = DX.CheckHitKey(DX.KEY_INPUT_A);
            int right = DX.CheckHitKey(DX.KEY_INPUT_D);
            int big   = DX.CheckHitKey(DX.KEY_INPUT_B);
            int small = DX.CheckHitKey(DX.KEY_INPUT_V);
            int space = DX.CheckHitKey(DX.KEY_INPUT_SPACE);

            // オートで移動するマリオ
            if (autoFlag == true)
            {
                switch (randValue)
                {
                // 左移動
                case 0:
                    left  = 1;
                    right = 0;
                    break;

                // 右移動
                case 1:
                    left  = 0;
                    right = 1;
                    break;

                // ジャンプ
                case 2:
                    space = DX.TRUE;
                    break;

                // 大きくなる
                case 3:
                    big = DX.TRUE;
                    break;

                // 小さくなる
                case 4:
                    small = DX.TRUE;
                    break;
                }
            }

            // ジャンプが押されているか
            if (space == DX.TRUE)
            {
                // ジャンプ中ではないか
                if (!jump.IsInJumping)
                {
                    //ジャンプ
                    jump.StartJump();
                }
            }

            // 左が押されているか
            if (left > 0 && right == 0)
            {
                this.mario.PositionX -= 10;

                // 画像は右向きなので左側へ移動したら反転させる。
                this.mario.ReverseRequired = DX.TRUE;

                this.marioWalk1.PositionX -= 10;

                // 画像は右向きなので左側へ移動したら反転させる。
                this.marioWalk1.ReverseRequired = DX.TRUE;

                this.marioWalk2.PositionX -= 10;

                // 画像は右向きなので左側へ移動したら反転させる。
                this.marioWalk2.ReverseRequired = DX.TRUE;

                this.marioJump.PositionX -= 10;

                // 画像は右向きなので左側へ移動したら反転させる。
                this.marioJump.ReverseRequired = DX.TRUE;

                isWalking = true;
            }

            // 右が押されているか
            else if (right > 0 && left == 0)
            {
                this.mario.PositionX += 10;

                // 左に向いている可能性があるので反転しないように設定する。
                this.mario.ReverseRequired = DX.FALSE;

                this.marioWalk1.PositionX += 10;

                // 左に向いている可能性があるので反転しないように設定する。
                this.marioWalk1.ReverseRequired = DX.FALSE;

                this.marioWalk2.PositionX += 10;

                // 左に向いている可能性があるので反転しないように設定する。
                this.marioWalk2.ReverseRequired = DX.FALSE;

                this.marioJump.PositionX += 10;

                // 左に向いている可能性があるので反転しないように設定する。
                this.marioJump.ReverseRequired = DX.FALSE;

                isWalking = true;
            }
            else
            {
                // 歩き状態フラグをfalseにする
                isWalking = false;
            }

            // Bが押下されたかどうか
            if (big == DX.TRUE)
            {
                const int Interval = 75;

                if (isBig == false)
                {
                    for (int i = 0; i < 5; ++i)
                    {
                        DX.ClearDrawScreen();
                        this.SmallMario();
                        this.Draw();
                        DX.ScreenFlip();
                        System.Threading.Thread.Sleep(Interval);
                        DX.ClearDrawScreen();
                        this.BigMario();
                        this.Draw();
                        DX.ScreenFlip();
                        System.Threading.Thread.Sleep(Interval);
                    }
                }

                isBig = true;
            }

            // Vが押下されたかどうか
            if (small == DX.TRUE)
            {
                const int Interval = 75;

                if (isBig == true)
                {
                    for (int i = 0; i < 5; ++i)
                    {
                        DX.ClearDrawScreen();
                        this.BigMario();
                        this.Draw();
                        DX.ScreenFlip();
                        System.Threading.Thread.Sleep(Interval);
                        DX.ClearDrawScreen();
                        this.SmallMario();
                        this.Draw();
                        DX.ScreenFlip();
                        System.Threading.Thread.Sleep(Interval);
                    }
                }

                isBig = false;
            }

            // 大きくするフラグがtrueかどうか
            if (isBig == true)
            {
                this.BigMario();
            }
            else
            {
                this.SmallMario();
            }

            // ジャンプ状態かどうか
            if (jump.IsInJumping)
            {
                var v = jump.Next();

                // ジャンプが終わったら int.MinValue を返してくるので、ジャンプ中のみ補正値を追加する。
                if (v != int.MinValue)
                {
                    // ジャンプ中の補正値を追加する
                    this.JumpMario(v);
                }

                // ジャンプのマリオを描画する
                this.drawMario = this.marioJump;
            }
            else
            {
                // 歩き状態かどうか
                if (isWalking == true)
                {
                    // カウンターが0<=10かどうか
                    if (this.walkCounter >= 0 && this.walkCounter <= 3)
                    {
                        // 歩きマリオ1を描画する
                        this.drawMario = this.marioWalk1;
                    }

                    // カウンターが11<=20かどうか
                    else if (this.walkCounter >= 4 && this.walkCounter <= 6)
                    {
                        // 歩きマリオ2を描画する
                        this.drawMario = this.marioWalk2;
                    }
                    else
                    {
                        // 歩きマリオ2を描画する。カウンターを0にする
                        this.drawMario   = this.marioWalk2;
                        this.walkCounter = 0;
                    }
                }
                else
                {
                    // 立ちマリオを描画する
                    this.drawMario = this.mario;
                }
            }

            // カウンターを+1する
            ++this.walkCounter;
        }