public Tears shoot(Point _p, Player.PlayerShoot _d) { Tears _tear = new Tears(Tears.side.enemy); _tear._Position = _p; _tear._Direction = _d; return(_tear); }
public void Move() { if (_side == side.player) { _speed_B = _speed; } else if (_side == side.enemy) { _speed_B = 5; } if (_direction == Player.PlayerShoot.Up) { if (_position.Y <= 380) { _position.Y += _speed_B; } else { _direction = Player.PlayerShoot.Stop; } } else if (_direction == Player.PlayerShoot.Down) { if (_position.Y >= 40) { _position.Y -= _speed_B; } else { _direction = Player.PlayerShoot.Stop; } } else if (_direction == Player.PlayerShoot.Left) { if (_position.X >= 70) { _position.X -= _speed_B; } else { _direction = Player.PlayerShoot.Stop; } } else if (_direction == Player.PlayerShoot.Right) { if (_position.X <= 760) { _position.X += _speed_B; } else { _direction = Player.PlayerShoot.Stop; } } }
public void Shoot(Point _Position, int Width, int Height, Player.PlayerShoot _playerShoot) { _sound_Shoot.Play(); _nowTear = _tear_0; if (_playerShoot == Player.PlayerShoot.Up) { _position = new Point(_Position.X + (Width) / 2 - _tear_0.Width / 2, _Position.Y + Height); } else if (_playerShoot == Player.PlayerShoot.Down) { _position = new Point(_Position.X + (Width) / 2 - _tear_0.Width / 2, _Position.Y); } else if (_playerShoot == Player.PlayerShoot.Left) { _position = new Point(_Position.X - _tear_0.Width, _Position.Y + Height / 2); } else if (_playerShoot == Player.PlayerShoot.Right) { _position = new Point(_Position.X + Width, _Position.Y + Height / 2); } }
public void ShootBoss(Point _p, Player.PlayerShoot _d) { _position = _p; _direction = _d; _nowTear = _tear_boss; }
private void timer1_Tick(object sender, EventArgs e) { #region 对键盘输入的相应 if (_nowgame == gameState.open) { bool keyDown = (((ushort)GetAsyncKeyState((int)Keys.Down)) & 0xffff) != 0; bool keyUp = (((ushort)GetAsyncKeyState((int)Keys.Up)) & 0xffff) != 0; bool keyRight = (((ushort)GetAsyncKeyState((int)Keys.Right)) & 0xffff) != 0; bool keyLeft = (((ushort)GetAsyncKeyState((int)Keys.Left)) & 0xffff) != 0; bool keyDownMove = (((ushort)GetAsyncKeyState((int)Keys.W)) & 0xffff) != 0; bool keyUpMove = (((ushort)GetAsyncKeyState((int)Keys.S)) & 0xffff) != 0; bool keyRightMove = (((ushort)GetAsyncKeyState((int)Keys.A)) & 0xffff) != 0; bool keyLeftMove = (((ushort)GetAsyncKeyState((int)Keys.D)) & 0xffff) != 0; Tears _myTears; if (keyDown == true) { if (_delayShoot <= 0) { _delayShoot = _player._DelayShoot; _player._PlayerShoot = Player.PlayerShoot.Up; _myTears = _player.Shoot(true); _tearList.Add(_myTears); } else if (_player._DelayShoot - _delayShoot <= timer1.Interval * 3) { _delayShoot -= timer1.Interval / 2; _player._PlayerMove = Player.PlayerMove.Up; _myTears = _player.Shoot(true); } else { _delayShoot -= timer1.Interval / 2; _player._PlayerShoot = Player.PlayerShoot.Up; _myTears = _player.Shoot(false); } } else if (keyUp == true) { if (_delayShoot <= 0) { _delayShoot = _player._DelayShoot; _player._PlayerShoot = Player.PlayerShoot.Down; _myTears = _player.Shoot(true); _tearList.Add(_myTears); } else if (_player._DelayShoot - _delayShoot <= timer1.Interval * 3) { _delayShoot -= timer1.Interval / 2; _player._PlayerMove = Player.PlayerMove.Down; _myTears = _player.Shoot(true); } else { _delayShoot -= timer1.Interval / 2; _player._PlayerShoot = Player.PlayerShoot.Down; _myTears = _player.Shoot(false); } } else if (keyLeft == true) { if (_delayShoot <= 0) { _delayShoot = _player._DelayShoot; _player._PlayerShoot = Player.PlayerShoot.Left; _myTears = _player.Shoot(true); _tearList.Add(_myTears); } else if (_player._DelayShoot - _delayShoot <= timer1.Interval * 3) { _delayShoot -= timer1.Interval / 2; _player._PlayerMove = Player.PlayerMove.Left; _myTears = _player.Shoot(true); } else { _delayShoot -= timer1.Interval / 2; _player._PlayerShoot = Player.PlayerShoot.Left; _myTears = _player.Shoot(false); } } else if (keyRight == true) { if (_delayShoot <= 0) { _delayShoot = _player._DelayShoot; _player._PlayerShoot = Player.PlayerShoot.Right; _myTears = _player.Shoot(true); _tearList.Add(_myTears); } else if (_player._DelayShoot - _delayShoot <= timer1.Interval * 3) { _delayShoot -= timer1.Interval / 2; _player._PlayerMove = Player.PlayerMove.Right; _myTears = _player.Shoot(true); } else { _delayShoot -= timer1.Interval / 2; _player._PlayerShoot = Player.PlayerShoot.Right; _myTears = _player.Shoot(false); } } else { _player._PlayerShoot = Player.PlayerShoot.Stop; if (_delayShoot > 0) { _delayShoot -= 100; } else { _delayShoot -= timer1.Interval / 2; _player._PlayerShoot = Player.PlayerShoot.Stop; _myTears = _player.Shoot(false); } } //判断按键且是否碰撞 if (keyDownMove == true) //&& !_boss_0.ifMakeDMG(_player._NowplayerMove, new Point(_player._Position.X, _player._Position.Y - _player._Speed))) { _player.Move(Player.PlayerMove.Down); } if (keyUpMove == true) //&& !_boss_0.ifMakeDMG(_player._NowplayerMove, new Point(_player._Position.X, _player._Position.Y + _player._Speed))) { _player.Move(Player.PlayerMove.Up); } if (keyLeftMove == true) //&& !_boss_0.ifMakeDMG(_player._NowplayerMove, new Point(_player._Position.X- _player._Speed, _player._Position.Y ))) { _player.Move(Player.PlayerMove.Left); } if (keyRightMove == true) //&& !_boss_0.ifMakeDMG(_player._NowplayerMove, new Point(_player._Position.X+ _player._Speed, _player._Position.Y ))) { _player.Move(Player.PlayerMove.Right); } if (keyLeftMove == false && keyRightMove == false && keyDownMove == false && keyUpMove == false) { _player.Move(Player.PlayerMove.Stop); } foreach (Tears t in _tearList) { t.Move(); } } #endregion #region 检测攻击与被攻击 bool _IfGameOver = _player.ifGameOver(); if (_can_not_BeDMG == 0) { _canBeDMG = true; _can_not_BeDMG = 2000; } else { _can_not_BeDMG -= 100; } if (_can_not_BeDMG == 1000) { _player._IfHurt = false; } if (_boss_0.ifMakeDMG(_player._NowplayerMove, _player._Position) && _canBeDMG) { _player.hurt(); _canBeDMG = false; _can_not_BeDMG = 2000; _player._IfHurt = true; } if (_IfGameOver) { _nowgame = gameState.over; } for (int i = 0; i < _tearList.Count; i++) { if (_tearList[i]._Side == Tears.side.player && _boss_0.ifMakeDMG(_tearList[i]._Tear_0, _tearList[i]._Position)) { _boss_0.hurt(_player._Dmg); _tearList.RemoveAt(i); } else if (_tearList[i]._Side == Tears.side.enemy && _player.ifTakeDMG(_tearList[i]._Tear_0, _tearList[i]._Position)) { if (_canBeDMG) { _player.hurt(); _canBeDMG = false; _can_not_BeDMG = 2000; _player._IfHurt = true; } else { _tearList.RemoveAt(i); } } if (_boss_0.ifBossDied()) { _nowgame = gameState.win; timer1.Enabled = false; _tearList.Clear(); } if (_player.ifGameOver()) { _nowgame = gameState.over; timer1.Enabled = false; _tearList.Clear(); } } #endregion #region Boss攻击 Random ran = new Random(); if (_bossTime == 0) { _Way = ran.Next(0, 2); } if (_bossTime <= 3000) { _bossTime += timer1.Interval; if (_true_attack == true) { // 攻击方式===================0 if (_Way == 0) { _boss_0.attackWay(0, _bossTime); if (_bossTime >= 1000 && _bossTime % 50 == 0) { // boss 射方向 Player.PlayerShoot _d = Player.PlayerShoot.Left; Tears _t; //随机眼泪方向 Point p = new Point(); if (_boss_0._Position.X < _player._Position.X) { _d = Player.PlayerShoot.Right; int x = ran.Next((int)(_boss_0._Position.X + _boss_0._Nowenemy.Width * _boss_0._Size / 2), (int)(_boss_0._Position.X + _boss_0._Nowenemy.Width * _boss_0._Size)); int y = ran.Next((int)(_boss_0._Position.Y), (int)(_boss_0._Position.Y + _boss_0._Nowenemy.Height * _boss_0._Size)); p = new Point(x, y); } else if (_boss_0._Position.X > _player._Position.X) { _d = Player.PlayerShoot.Left; int x = ran.Next((int)(_boss_0._Position.X), (int)(_boss_0._Position.X + _boss_0._Nowenemy.Width * _boss_0._Size / 2)); int y = ran.Next((int)(_boss_0._Position.Y), (int)(_boss_0._Position.Y + _boss_0._Nowenemy.Height * _boss_0._Size)); p = new Point(x, y); } _t = _boss_0.shoot(p, _d); _tearList.Add(_t); } if (_bossTime == 2000) { _true_attack = false; } } //======================== 1 if (_Way == 1) { _boss_0.attackWay(1, _bossTime); //记录boss起跳时玩家位置 if (_bossTime >= 1000 && _bossTime <= 1100) { _boss_0._Position = new Point(0, 100000); p = new Point(_player._Position.X - (int)(_boss_0._Nowenemy.Width * _boss_0._Size / 2), _player._Position.Y - (int)(_boss_0._Nowenemy.Height * _boss_0._Size / 2)); } else if (_bossTime == 2000) { _boss_0._Position = p; } if (_bossTime == 3000) { _true_attack = false; } } } } else { _bossTime = 0; _true_attack = true; } #endregion pictureBoxBackground.Invalidate(); }