C#的winform拼数字游戏


声明:阅读了别人的代码学习修改而来,增加了美观度和游戏乐趣。(作者出处忘了不好意思)

程序截图

关键代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace PingNumberGame {
public partial class MainForm : Form {
public MainForm() {
InitializeComponent();
btnGiveup.Visible = false;
}
Label[,] arrLbl = new Label[3, 3];
int unRow = 0, unCol = 0;
bool playing = false;
const int maxWarning = 5;
string[] warning ={"你简直弱爆了",
"小学没毕业吧你",
"天呐,什么人呐",
"真为你的智商感到捉急",
"你走开我有傻逼恐惧症"}; public void move(object sender) {
if(!playing) {
return;
}
int row = ((Label)sender).Top / 120;
int col = ((Label)sender).Left / 120;
if(Math.Abs(row - unRow) + Math.Abs(col - unCol) == 1) {
string temp = arrLbl[unRow, unCol].Text;
arrLbl[unRow, unCol].Text = arrLbl[row, col].Text;
arrLbl[row, col].Text = temp;
arrLbl[unRow, unCol].Visible = true;
arrLbl[row, col].Visible = false;
unRow = row;
unCol = col;
}
for(int i = 0; i < 9; i++) {
if(arrLbl[i / 3, i % 3].Text != Convert.ToString(i + 1))
break;
if(i == 8) {
arrLbl[unRow, unCol].Visible = true;
playing = false;
MessageBox.Show("恭喜你通过了游戏!", "祝贺", MessageBoxButtons.OK, MessageBoxIcon.Information);
btnGiveup.Visible = false;
btnPlay.Visible = true;
}
}
} private void label1_Click(object sender, EventArgs e) {
move(sender);
} private void label2_Click(object sender, EventArgs e) {
move(sender);
} private void label3_Click(object sender, EventArgs e) {
move(sender);
} private void label4_Click(object sender, EventArgs e) {
move(sender);
} private void label5_Click(object sender, EventArgs e) {
move(sender);
} private void label6_Click(object sender, EventArgs e) {
move(sender);
} private void label7_Click(object sender, EventArgs e) {
move(sender);
} private void label8_Click(object sender, EventArgs e) {
move(sender);
} private void label9_Click(object sender, EventArgs e) {
move(sender);
} private void btnPlay_Click(object sender, EventArgs e) {
arrLbl[0, 0] = label1;
arrLbl[0, 1] = label2;
arrLbl[0, 2] = label3;
arrLbl[1, 0] = label4;
arrLbl[1, 1] = label5;
arrLbl[1, 2] = label6;
arrLbl[2, 0] = label7;
arrLbl[2, 1] = label8;
arrLbl[2, 2] = label9;
arrLbl[unRow, unCol].Visible = true;
int[] arrNum = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Random rm = new Random();
for(int i = 0; i < 8; i++) {
int rmNum = rm.Next(i, 9);
int temp = arrNum[i];
arrNum[i] = arrNum[rmNum];
arrNum[rmNum] = temp;
}
for(int i = 0; i < 9; i++) {
arrLbl[i / 3, i % 3].Text = arrNum[i].ToString();
}
int cover = rm.Next(0, 9);
unRow = cover / 3;
unCol = cover % 3;
arrLbl[unRow, unCol].Visible = false;
playing = true;
btnGiveup.Visible = true;
btnPlay.Visible = false;
} private void btnGiveup_Click(object sender, EventArgs e) {
Random rm=new Random();
int num = rm.Next(0, maxWarning);
MessageBox.Show(warning[num], "鄙视", MessageBoxButtons.OK, MessageBoxIcon.Warning);
btnPlay.Visible = true;
btnGiveup.Visible = false;
}
}
}

完整工程

度盘下载

最新文章

  1. Z字形扫描(201412-2)
  2. GDUFE-OJ 1203x的y次方的最后三位数 快速幂
  3. sqlite数据库中 保存和读取UIData对象
  4. Identity Card(水题)
  5. [原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇)
  6. socket网络编程快速上手(二)——细节问题(1)
  7. 基本c功能使用不当导致崩溃
  8. Spring MVC Restful Put方法无法获取参数值
  9. esp32驱动SSD1306的oled显示汉字(micropython)
  10. 第53节:Java当中的IO流(上)
  11. [luogu3834][可持久化线段树 1(主席树)]
  12. Confluence 6 重构索引缓慢
  13. Javascript数组Array的forEach方法
  14. Python获取系统音量
  15. MyBatis基础入门《五》核心配置文件
  16. DG备库无法接受主库归档日志之密码文件
  17. 一台机器上安装两个tomcat
  18. jenkins常用插件汇总
  19. jquery性能优化的十种方法
  20. 威尔逊定理--HDU2973

热门文章

  1. LeetCode 55
  2. 如何为不定高度(height:auto)的元素添加CSS3 transition-property:height 动画
  3. Table of Contents - Apache Commons
  4. Developers, do consider different user roles! - A bad experience with cron
  5. 三、android中Handle类的用法
  6. node.js安装方法总结
  7. 检测是否支持HTML5中的Video标签
  8. Python深复制浅复制or深拷贝浅拷贝
  9. vector C++ 详细用法
  10. 观察者模式(Observer)