请使用C#窗体应用程序编写一个打砖块游戏
时间: 2024-02-01 12:16:49 浏览: 95
好的,以下是一个简单的打砖块游戏的C#窗体应用程序示例:
```csharp
using System;
using System.Drawing;
using System.Windows.Forms;
namespace BrickBreakerGame
{
public partial class Form1 : Form
{
private int ballX = 245; // 球的初始位置
private int ballY = 280;
private int ballSpeedX = 5; // 球的速度
private int ballSpeedY = -5;
private int paddleX = 200; // 挡板的初始位置
private int bricksLeft = 30; // 障碍物的初始数量
private bool gameStarted = false; // 游戏是否已开始
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
Cursor.Hide(); // 隐藏鼠标指针
this.FormBorderStyle = FormBorderStyle.None; // 隐藏窗口边框
this.Bounds = Screen.PrimaryScreen.Bounds; // 全屏显示窗口
}
private void timer1_Tick(object sender, EventArgs e)
{
ballX += ballSpeedX;
ballY += ballSpeedY;
ball.Bounds = new Rectangle(ballX, ballY, 20, 20);
paddle.Bounds = new Rectangle(paddleX, 420, 100, 20);
if (ball.Bottom >= paddle.Top && ball.Bottom <= paddle.Bottom && ball.Left >= paddle.Left && ball.Right <= paddle.Right)
{
ballSpeedY *= -1; // 球撞到挡板上
}
foreach (Control c in this.Controls)
{
if (c is PictureBox && c.Tag == "brick")
{
if (ball.Bounds.IntersectsWith(c.Bounds))
{
this.Controls.Remove(c); // 移除碰撞的障碍物
ballSpeedY *= -1; // 球反弹
bricksLeft--; // 减少障碍物数量
}
}
}
if (bricksLeft == 0)
{
MessageBox.Show("游戏胜利!");
Close();
}
if (ball.Left <= 0 || ball.Right >= ClientSize.Width)
{
ballSpeedX *= -1; // 球碰到左右边缘反弹
}
if (ball.Top <= 0)
{
ballSpeedY *= -1; // 球碰到上边缘反弹
}
if (ball.Bottom >= ClientSize.Height)
{
MessageBox.Show("游戏结束!");
Close();
}
if (gameStarted == false)
{
ball.Left = paddle.Left + (paddle.Width / 2) - (ball.Width / 2);
ball.Top = paddle.Top - ball.Height;
ballSpeedX = 0;
ballSpeedY = 0;
if (e is KeyEventArgs && ((KeyEventArgs)e).KeyCode == Keys.Space)
{
gameStarted = true;
ballSpeedX = 5;
ballSpeedY = -5;
}
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
paddleX = e.X - (paddle.Width / 2); // 鼠标移动时改变挡板位置
}
}
}
```
在窗体设计器中,添加一个 `PictureBox` 控件并设置 `Tag` 属性为 `"ball"`,用于表示球;添加一个 `PictureBox` 控件并设置 `Tag` 属性为 `"paddle"`,用于表示挡板;添加多个 `PictureBox` 控件并设置 `Tag` 属性为 `"brick"`,用于表示障碍物。同时,将窗体的 `KeyDown` 事件绑定到 `Form1_KeyDown` 方法中,用于在按下空格键后开始游戏。
运行程序后,使用鼠标移动挡板,使球不掉落并击碎所有障碍物即可获胜。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)