📄 lbhform.cs
字号:
Lev = 1 ;
BulletNum = 5 ;
Success = 0 ;
TopDirection= 1 ;
PowerNum = 0 ;
DirectionNum= 0 ;
}
private void Target_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
//将Target对象外观改为圆形
GraphicsPath gp = new GraphicsPath();
gp.AddEllipse(0, 0, 100, 100);
Region r = new Region(gp);
Target.Region = r;
}
private void ButBegin_Click(object sender, System.EventArgs e)
{
Lev = 1 ;
BulletNum = 5 ;
PassNum = 0 ;
Success = 0 ;
TopDirection = 1 ;
BulletNumShow.Text = BulletNum.ToString();
CurrentSuccessShow.Text = "0";
LevSuccessShow.Text = "0";
/*
//在Target对象上画同心圆
Graphics Palette = Target.CreateGraphics() ;
Palette.Clear(Color.White);
//SolidBrush myBrush = new SolidBrush(Color.White);
//Palette.FillEllipse(myBrush,0,0,100,100);
Pen myPen = new Pen(Color.Red);
myPen.Width = 1;
Palette.DrawArc(myPen,0,0,100,100,0,360);
Palette.DrawArc(myPen,5,5,90,90,0,360);
Palette.DrawArc(myPen,10,10,80,80,0,360);
Palette.DrawArc(myPen,15,15,70,70,0,360);
Palette.DrawArc(myPen,20,20,60,60,0,360);
Palette.DrawArc(myPen,25,25,50,50,0,360);
Palette.DrawArc(myPen,30,30,40,40,0,360);
Palette.DrawArc(myPen,35,35,30,30,0,360);
Palette.DrawArc(myPen,40,40,20,20,0,360);
Palette.DrawArc(myPen,45,45,10,10,0,360);
*/
//开始游戏
ShowStart() ;
ShootRange.Enabled = true ;
Target.Enabled = true ;
Target.Visible = false ;
Target.Visible = true ;
GameTime.Start() ;
}
private void ButEnd_Click(object sender, System.EventArgs e)
{
//退出游戏
this.Close();
}
private void GameTime_Tick(object sender, System.EventArgs e)
{
//移动Target对象
Target.Left = Target.Left + Lev ;
if(Target.Top <= 0) { TopDirection = 1 ; }
if(Target.Top >= (ShootRange.Height - Target.Height)) { TopDirection = 0 ; }
if(TopDirection == 1 )
{
//向下
Target.Top = Target.Top + Lev ;
}
if(TopDirection == 0 )
{
//向上
Target.Top = Target.Top - Lev ;
}
//边界检测
if(Target.Left >= ShootRange.Width)
{
GameTime.Stop();
ShowStart() ;
//开始游戏
GameTime.Start() ;
}
}
private void ShootRange_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
//减少一发子弹
BulletNum--;
if(BulletNum == 0)
{
GameTime.Stop();
if(Pass())
{
//进入下一级
Lev++;
if(Lev == 10)
{
MessageBox.Show("恭喜您已经打通所有级别,请转玩其它游戏吧!");
GameStop();
}
else
{
MessageBox.Show("进入下一级别!");
BulletNum = 5 ;
PassNum = 0;
BulletNumShow.Text = BulletNum.ToString();
ShowStart();
}
}
else
{
MessageBox.Show("Game Over!");
GameStop();
}
}
else
{
ShowStart();
CurrentSuccessShow.Text = "0";
Target.Visible = false ;
Target.Visible = true ;
BulletNumShow.Text = BulletNum.ToString();
}
}
private void Target_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
//处理打靶事件
GameTime.Stop();
int X,Y,Distance;
Distance = 0;
X = e.X ;
Y = e.Y ;
Wind(ref X,ref Y);
//在打击点画点
Graphics Palette = Target.CreateGraphics() ;
SolidBrush myBrush = new SolidBrush(Color.Black);
Palette.FillEllipse(myBrush,X,Y,5,5);
Thread.Sleep(500);
//应用两点间距离公式
X = X - 50 ;
X = Math.Abs(X);
X = X*X ;
Y = Y - 50 ;
Y = Math.Abs(Y);
Y = Y*Y ;
Distance = X + Y;
Distance = (int)Math.Sqrt(Distance) ;
//计算所打环数
if(Distance >= 50) { Distance = 49 ;}
Distance = Distance/5 ;
Distance = 10 - Distance ;
PassNum = PassNum + Distance ;
Success = Success + Distance ;
SuccessShow.Text = Success.ToString();
CurrentSuccessShow.Text = Distance.ToString() ;
LevSuccessShow.Text = PassNum.ToString();
//减少一发子弹
BulletNum--;
if(BulletNum == 0)
{
if(Pass())
{
//进入下一级
Lev++;
if(Lev == 10)
{
MessageBox.Show("恭喜您已经打通所有级别,请转玩其它游戏吧!");
GameStop();
}
else
{
MessageBox.Show("进入下一级别!");
BulletNum = 5 ;
BulletNumShow.Text = BulletNum.ToString();
PassNum = 0;
ShowStart();
}
}
else
{
MessageBox.Show("Game Over!");
GameStop();
}
}
else
{
//置Target初始状态
ShowStart();
Target.Visible = false ;
Target.Visible = true ;
BulletNumShow.Text = BulletNum.ToString();
}
GameTime.Start();
}
private void ShowStart()
{
//清空图像
Graphics Palette = Target.CreateGraphics() ;
Palette.Clear(Color.Transparent);
//设定起点
Random NumRand = new Random();
Target.Top = NumRand.Next(0,150) ;
Target.Left = 0 ;
//设定风力、风向
PowerNum = NumRand.Next(0,3) ;
DirectionNum = NumRand.Next(0,8) ;
PowerNumShow.Text = PowerNum.ToString();
switch (DirectionNum)
{
case 0 :
DirectionNumShow.Text = "无风";
break;
case 1 :
DirectionNumShow.Text = "北风";
break;
case 2 :
DirectionNumShow.Text = "东北风";
break;
case 3 :
DirectionNumShow.Text = "东风";
break;
case 4 :
DirectionNumShow.Text = "东南风";
break;
case 5 :
DirectionNumShow.Text = "南风";
break;
case 6 :
DirectionNumShow.Text = "西南风";
break;
case 7 :
DirectionNumShow.Text = "西风";
break;
case 8 :
DirectionNumShow.Text = "西北风";
break;
}
}
private void GameStop()
{
GameTime.Stop();
Target.Visible = false ;
Target.Enabled = false ;
ShootRange.Enabled = false ;
}
private bool Pass()
{
switch (Lev)
{
case 1 :
if(PassNum >= 43)
{ return true ; }
break;
case 2 :
if(PassNum >= 40)
{ return true ; }
break;
case 3 :
if(PassNum >= 35)
{ return true ; }
break;
case 4 :
if(PassNum >= 30)
{ return true ; }
break;
case 5 :
if(PassNum >= 25)
{ return true ; }
break;
case 6 :
if(PassNum >= 20)
{ return true ; }
break;
case 7 :
if(PassNum >= 15)
{ return true ; }
break;
case 8 :
if(PassNum >= 10)
{ return true ; }
break;
case 9 :
if(PassNum >= 10)
{ return true ; }
break;
}
return false ;
}
private void Wind(ref int x,ref int y)
{
switch (DirectionNum)
{
case 0 :
break;
case 1 :
y = y - PowerNum*5;
break;
case 2 :
x = x + PowerNum*5;
y = y - PowerNum*5;
break;
case 3 :
x = x + PowerNum*5;
break;
case 4 :
x = x + PowerNum*5;
y = y + PowerNum*5;
break;
case 5 :
y = y + PowerNum*5;
break;
case 6 :
x = x - PowerNum*5;
y = y + PowerNum*5;
break;
case 7 :
x = x - PowerNum*5;
break;
case 8 :
x = x - PowerNum*5;
y = y - PowerNum*5;
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -