本文介绍了C#游戏结束了arcanoid砖砌游戏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要当球从棋盘中传球然后显示失败。游戏结束。我不知道如何编写该代码。请帮助我。
谢谢。
我尝试过:
I need when the ball passes from the board then show a defeat`Game Over.I don't know how to write that code.Please help me.
Thanks.
What I have tried:
class Ball
{
public int x;
public int y;
public int vx = 3;
public int vy = 3;
public int r;
public Graphics gf;
public Game game;
public SolidBrush myColor;
public Ball(int x,int y,int vx,int vy,int r,Graphics gf,Game game)
{
this.x = x;
this.y = y;
this.vx = vx;
this.vy = vy;
this.r = r;
this.gf = gf;
this.game = game;
myColor = new SolidBrush(Color.IndianRed);
}
public void Draw()
{
this.gf.FillEllipse(myColor, x, y, r, r);
}
public void Move()
{
this.x += this.vx;
this.y += this.vy;
if(this.x <= 0 || this.x > game.ClientSize.Width - r)
{
Random rnd = new Random();
int r = rnd.Next(0, 256);
int g = rnd.Next(0, 256);
int b = rnd.Next(0, 256);
SolidBrush guyn = new SolidBrush(Color.FromArgb(255, r, g, b));
this.myColor = guyn;
vx *= -1;
}
if(this.y <= 0)
{
Random rnd = new Random();
int r = rnd.Next(0, 256);
int g = rnd.Next(0, 256);
int b = rnd.Next(0, 256);
SolidBrush guyn = new SolidBrush(Color.FromArgb(255, r, g, b));
this.myColor = guyn;
this.vy *= -1;
}
this.Draw();
}
public bool hits(Board board)
{
int x1 = this.x + this.r / 2;
int x2 = board.x + board.w / 2;
int y1 = this.y;
int y2 = board.y;
int y_dist = Math.Abs(y1 - y2);
int x_dist = Math.Abs(x1 - x2);
if(y_dist <= r/2 + board.h/2 && x_dist <= board.w/2 + r / 2)
{
return true;
}
else
{
return false;
}
}
}
class Board
{
public int x;
public int y;
public int w;
public int h;
public Graphics gf;
public Game game;
public SolidBrush MyColor;
public Board(int x, int y, int w, int h, Graphics gf, Game game)
{
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.gf = gf;
this.game = game;
MyColor = new SolidBrush(Color.Black);
}
public void draw()
{
gf.FillRectangle(MyColor, x, y, w, h);
}
public void gna(string v)
{
if (v == "left" && x > 0)
{
this.x -= 10;
}
else if (v == "right" && x < this.game.ClientSize.Width - 85)
{
this.x += 10;
}
this.draw();
}
}
public partial class Game : Form
{
Graphics gf;
Ball ball;
Board board;
public Game()
{
InitializeComponent();
this.gf = this.CreateGraphics();
this.board = new Board(this.ClientSize.Width / 2 - 40, this.ClientSize.Height - 60, 80, 20,gf,this);
this.ball = new Ball(this.ClientSize.Width / 2 - 10, this.ClientSize.Height/2 - 10, 3, 3, 20, gf, this);
}
private void Game_Paint(object sender, PaintEventArgs e)
{
this.board.draw();
this.ball.Draw();
}
private void Game_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Left:
case Keys.A:
this.board.gna("left");
break;
case Keys.Right:
case Keys.D:
this.board.gna("right");
break;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
this.gf.FillRectangle(Brushes.White, 0, 0, this.ClientSize.Width, this.ClientSize.Height);
this.board.draw();
this.ball.Draw();
this.ball.Move();
if (this.ball.hits(this.board))
{
Random rnd = new Random();
int r = rnd.Next(0, 256);
int g = rnd.Next(0, 256);
int b = rnd.Next(0, 256);
SolidBrush guyn = new SolidBrush(Color.FromArgb(255, r, g, b));
this.ball.myColor = guyn;
this.board.MyColor = guyn;
this.ball.vy *= -1;
}
}
}
推荐答案
这篇关于C#游戏结束了arcanoid砖砌游戏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!