第四天,有洞的石头

要在 WinForm 中实现一个“剪刀、石头、布”游戏,并将玩家的选择(剪刀、石头、布)保存到 `Panel` 控件中,你可以通过以下步骤完成: --- ## ✅ 功能目标: - 玩家点击“剪刀”、“石头”或“布”按钮,选择自己的出拳 - 将玩家的选择图标(图片)显示在一个 `Panel` 控件中 - 可扩展用于后续的对战逻辑(如对战电脑) --- ## ✅ 示例界面布局: - `Button btnRock`:石头按钮 - `Button btnScissors`:剪刀按钮 - `Button btnPaper`:布按钮 - `Panel panelPlayerChoice`:用于显示玩家选择的图片 - `ImageList imageList1`:存放剪刀、石头、布的图片 --- ## ✅ 完整代码示例: ```csharp namespace RockPaperScissorsGame { public partial class Form1 : Form { private ImageList imageList; // 存储剪刀、石头、布图片 private string playerChoice = ""; // 存储玩家选择的名称 public Form1() { InitializeComponent(); InitializeGame(); } private void InitializeGame() { // 初始化ImageList imageList = new ImageList(); imageList.ImageSize = new Size(64, 64); imageList.Images.Add("Rock", Image.FromFile(@"images\rock.png")); // 请替换为你自己的图片路径 imageList.Images.Add("Scissors", Image.FromFile(@"images\scissors.png")); imageList.Images.Add("Paper", Image.FromFile(@"images\paper.png")); // 创建按钮 Button btnRock = new Button() { Text = "石头", Location = new Point(20, 20) }; Button btnScissors = new Button() { Text = "剪刀", Location = new Point(100, 20) }; Button btnPaper = new Button() { Text = "布", Location = new Point(180, 20) }; btnRock.Click += PlayerChoice_Click; btnScissors.Click += PlayerChoice_Click; btnPaper.Click += PlayerChoice_Click; // 创建Panel用于显示玩家选择 Panel panelPlayerChoice = new Panel() { Location = new Point(20, 70), Size = new Size(80, 80), BorderStyle = BorderStyle.FixedSingle }; panelPlayerChoice.Name = "panelPlayerChoice"; // 添加控件 this.Controls.Add(btnRock); this.Controls.Add(btnScissors); this.Controls.Add(btnPaper); this.Controls.Add(panelPlayerChoice); } private void PlayerChoice_Click(object sender, EventArgs e) { Button clickedButton = sender as Button; string choice = clickedButton.Text; // 保存玩家选择 playerChoice = choice; // 获取对应的ImageList索引 int imageIndex = -1; switch (choice) { case "石头": imageIndex = 0; break; case "剪刀": imageIndex = 1; break; case "布": imageIndex = 2; break; } if (imageIndex != -1) { // 获取Panel Panel panel = this.Controls["panelPlayerChoice"] as Panel; // 清空原有控件 panel.Controls.Clear(); // 创建PictureBox显示图片 PictureBox pictureBox = new PictureBox() { Image = imageList.Images[imageIndex], SizeMode = PictureBoxSizeMode.Zoom, Dock = DockStyle.Fill }; panel.Controls.Add(pictureBox); } MessageBox.Show($"你选择了:{choice}"); } } } ``` --- ## ✅ 说明: - 使用 `ImageList` 来统一管理剪刀、石头、布的图片资源。 - 玩家点击按钮后,使用 `PlayerChoice_Click` 事件获取选择内容。 - 根据选择内容,从 `ImageList` 中取出对应图片,并显示在 `Panel` 中的 `PictureBox` 上。 - 使用 `panel.Controls.Clear()` 确保每次只显示一个选择。 --- ## ✅ 图片资源路径建议: 请将图片 `rock.png`, `scissors.png`, `paper.png` 存放在项目目录下的 `images` 文件夹中,或者你可以使用资源文件嵌入方式将图片资源打包进程序中。 --- ## ✅ 进阶建议: - 使用 `ResourceManager` 将图片嵌入资源文件中,避免外部路径依赖。 - 增加“电脑出拳”逻辑,实现完整对战流程。 - 添加“重置”按钮清空选择。 --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值