学习c#桌面应用编程 --- 我的第一个游戏

场景

我需要做一个c#桌面窗口软件,但是我曾经都是专职于java开发,但是java对windows并不是特别友好(awt除外),于是必须需要掌握c#桌面编程,所以我需要手动做一个小游戏,来学习c#的一些基本桌面应用的知识。

开始

这是一个连连看的小游戏

namespace game
{public partial class Form1 : Form{// Use this Random object to choose random icons for the squaresRandom random = new Random();// Each of these letters is an interesting icon// in the Webdings font,// and each icon appears twice in this listList<string> icons = new List<string>(){"!", "!", "N", "N", ",", ",", "k", "k","b", "b", "v", "v", "w", "w", "z", "z"};// firstClicked points to the first Label control // that the player clicks, but it will be null // if the player hasn't clicked a label yetLabel firstClicked = null;// secondClicked points to the second Label control // that the player clicksLabel secondClicked = null;/// <summary>/// Assign each icon from the list of icons to a random square/// </summary>private void AssignIconsToSquares(){// The TableLayoutPanel has 16 labels,// and the icon list has 16 icons,// so an icon is pulled at random from the list// and added to each labelforeach (Control control in tableLayoutPanel1.Controls){Label iconLabel = control as Label;if (iconLabel != null){int randomNumber = random.Next(icons.Count);iconLabel.Text = icons[randomNumber];iconLabel.ForeColor = iconLabel.BackColor;icons.RemoveAt(randomNumber);}}}public Form1(){InitializeComponent();AssignIconsToSquares();}private void Form1_Load(object sender, EventArgs e){}/// <summary>/// Every label's Click event is handled by this event handler/// </summary>/// <param name="sender">The label that was clicked</param>/// <param name="e"></param>private void label1_Click(object sender, EventArgs e){// The timer is only on after two non-matching // icons have been shown to the player, // so ignore any clicks if the timer is runningif (timer1.Enabled == true)return;Label clickedLabel = sender as Label;if (clickedLabel != null){// If the clicked label is black, the player clicked// an icon that's already been revealed --// ignore the clickif (clickedLabel.ForeColor == Color.Black)return;// If firstClicked is null, this is the first icon// in the pair that the player clicked, // so set firstClicked to the label that the player // clicked, change its color to black, and returnif (firstClicked == null){firstClicked = clickedLabel;firstClicked.ForeColor = Color.Black;return;}// Check to see if the player wonCheckForWinner();// If the player gets this far, the timer isn't// running and firstClicked isn't null,// so this must be the second icon the player clicked// Set its color to blacksecondClicked = clickedLabel;secondClicked.ForeColor = Color.Black;// If the player clicked two matching icons, keep them // black and reset firstClicked and secondClicked // so the player can click another iconif (firstClicked.Text == secondClicked.Text){firstClicked = null;secondClicked = null;return;}// If the player gets this far, the player // clicked two different icons, so start the // timer (which will wait three quarters of // a second, and then hide the icons)timer1.Start();CheckForWinner();}}private void timer1_Tick(object sender, EventArgs e){// Stop the timertimer1.Stop();// Hide both iconsfirstClicked.ForeColor = firstClicked.BackColor;secondClicked.ForeColor = secondClicked.BackColor;// Reset firstClicked and secondClicked // so the next time a label is// clicked, the program knows it's the first clickfirstClicked = null;secondClicked = null;}private void CheckForWinner(){// Go through all of the labels in the TableLayoutPanel, // checking each one to see if its icon is matchedforeach (Control control in tableLayoutPanel1.Controls){Label iconLabel = control as Label;if (iconLabel != null){if (iconLabel.ForeColor == iconLabel.BackColor)return;}}// If the loop didn’t return, it didn't find// any unmatched icons// That means the user won. Show a message and close the formMessageBox.Show("You matched all the icons!", "Congratulations");Close();}}}

效果

在这里插入图片描述

在这里插入图片描述

结束

有个大致的了解,可以开始我的开发了。

对于新的技术,我的总结是:
文档生demo,demo生一,一生万物

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C1N短网址 - 是如何做到行业领先的

今天从技术角度来聊下短网址的一些事情&#xff0c;市面上的短网址发展基本上经历了几个阶段。 短网址发展的几个阶段&#xff1a; 第一阶段&#xff1a;网址缩短&#xff0c;很纯粹的功能&#xff0c;各个大小公司都在做&#xff0c;门槛很低。典型代表&#xff1a;百度短网…

项目添加以vue为后缀名的vue文件,怎么解析打包

我们都知道&#xff0c;将css文件打包起来&#xff0c;需要加载css-loader和style-loader&#xff0c;那么vue文件打包也需要 下载插件&#xff1a; npm install vue-loader vue-template-compiler --save -dev 下载过程&#xff1a; 下载成功样子&#xff1a; 下载完之后&am…

Android屏幕刷新机制

基础知识 CPU运行在Android设备上的中央处理器&#xff08;Central Processing Unit&#xff09;是Android设备的核心组件之一&#xff0c;负责执行计算和控制设备的各种操作。 Android设备上的CPU通常采用ARM架构&#xff0c;如ARM Cortex-A系列处理器。这些处理器具有高性能…

nginx+nodejs 一台服务器站架多个网站

一、一台服务器架设多个 nodejs 网站的拓扑结构 二、搭建 Nodejs 生产环境 1、下载 下载 nodejs 二进制代码包或者&#xff0c;然后减压到 /usr/local/nodejs 2、配置环境变量 (1).vi /etc/profile (2).最后面添加&#xff1a; export NODE_HOME/usr/local/nodejs/bin…

hbase操作学习

1.namespace list_namespace 展示数据库 create_namespace 可以带属性名 属性值 create_namespace mydb,{author>hjp,ctime>2023-10-18}describe_namespace ‘库名’ 查看库的详细信息 alter_namespace ‘库名’ 修改表的详细信息 删除就是把method设置为unset dr…

识别准确率竟如此高,实时语音识别服务

前言 本文将介绍一个准确率非常高的语音识别框架&#xff0c;那就是FunASR&#xff0c;这个框架的模型训练数据超过几万个小时&#xff0c;经过测试&#xff0c;准确率非常高。本文将介绍如何启动WebSocket服务和Android调用这个服务来实时识别&#xff0c;一边说话一边出结果…

10. 机器学习-评测指标

Hi,你好。我是茶桁。 之前的课程中&#xff0c;我们学习了两个最重要的回归方法&#xff0c;一个线性回归&#xff0c;一个逻辑回归。也讲解了为什么学习机器学习要从逻辑回归和线性回归讲起。因为我们在解决问题的时候&#xff0c;有限选择简单的假设&#xff0c;越复杂的模型…

39 WEB漏洞-XXEXML之利用检测绕过全解

目录 涉及案例pikachu靶场xml数据传输测试-回显、玩法、协议、引入玩法-读文件玩法-内网探针或攻击内网应用(触发漏洞地址)玩法-RCE引入外部实体dtd无回显-读取文件协议-读文件&#xff08;绕过&#xff09;xxe-lab靶场登陆框xml数据传输测试-检测发现CTF-Jarvis-OJ-Web-XXE安全…

3dmax中导出模型到unity注意事项

从3dmax中导出 1. 注意单位&#xff0c;根据需要&#xff0c;选英寸还是选厘米 2. 不能导出有错误的骨骼&#xff0c;否则导入后模型网格里出现 Skinned Mesh Renderer &#xff0c;对网格变换移动有影响&#xff0c;正常情况下都应该是 Mesh Renderer 3. 导出一般不带光源和…

使用VGG框架实现从二分类到多分类

一.数据集的准备 与之前的不同&#xff0c;这一次我们不使用开源数据集&#xff0c;而是自己来制作数据集。重点需要解决的问题是对数据进行预处理&#xff0c;如每一个图片的大小均不同&#xff0c;需要进行resize&#xff0c;还需要对每一张图片打标签等操作。 数据集文件 …

【C++代码】二叉搜索树的最近公共祖先,二叉搜索树中的插入操作,删除二叉搜索树中的节点--代码随想录

题目&#xff1a;二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&a…

YOLOv8改进实战 | 更换主干网络Backbone(三)之轻量化模型ShuffleNetV2

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

中文编程开发语言编程实际案例:程序控制灯电路以及桌球台球室用这个程序计时计费

中文编程开发语言编程实际案例&#xff1a;程序控制灯电路以及桌球台球室用这个程序计时计费 上图为&#xff1a;程序控制的硬件设备电路图 上图为&#xff1a;程序控制灯的开关软件截图&#xff0c;适用范围比如&#xff1a;台球厅桌球室的计时计费管理&#xff0c;计时的时候…

谈谈单例设计模式的源码应用和安全问题

一、源码应用 事实上&#xff0c;我们在JDK或者其他的通用框架中很少能看到标准的单例设计模式&#xff0c;这也就意味着他确实很经典&#xff0c;但严格的单例设计确实有它的问题和局限性&#xff0c;我们先看看在源码中的一些案例 1、jdk中的单例 jdk中有一个类的实现是一…

基因表达分析聚类分析

基因表达分析聚类&分析 1. Introduction to gene expression analysis Technology: microarrays vs. RNAseq. Resulting data matricesSupervised (Clustering) vs. unsupervised (classification) learning 微阵列技术&#xff1a; 制备DNA探针阵列并进行互补性杂交。 …

【深度学习-第4篇】使用MATLAB快速实现CNN多变量回归预测

上一篇我们讲了使用CNN进行分类的MATLAB代码。 这一篇我们讲CNN的多变量回归预测。 是的&#xff0c;同样是傻瓜式的快速实现。 一、什么是多变量回归预测 多变量回归预测则是指同时考虑多个输入特征进行回归预测。举几个例子&#xff1a; 房价预测&#xff1a;给定一组房…

索引背后的数据结构——B+树

为什么要使用B树&#xff1f; 可以进行数据查询的数据结构有二叉搜索树、哈希表等。对于前者来说&#xff0c;树的高度越高&#xff0c;进行查询比较的时候访问磁盘的次数就越多。而后者只有在数据等于key值的时候才能进行查询&#xff0c;不能进行模糊匹配。所以出现了B树来解…

【Excel】WPS单元格快速转换表格字母大小写

使用WPS Office打开表格&#xff0c;选择需要处理的单元格或单元格区域。 依次点击「会员专享」选项卡 —>「智能工具箱」。 再点击「格式」—>「大小写」&#xff0c;选择一种大小写转换方式即可。

ESP32网络开发实例-连接信号最强的热点

连接信号最强的热点 文章目录 连接信号最强的热点1、软件准备2、硬件准备3、代码实现在本文中,将向您展示如何使用 ESP32 WiFiMulti 库。 这使我们能够使用多个网络,ESP32 可以连接到列表中可用的最强 WiFi 网络。 每当它失去连接时,它都会重新连接到列表中下一个最强的网络…

SpringBoot项目创建失败或无法启动,启动报错时的常见问题及解决方案

1、无法启动&#xff0c;没有启动的三角按钮 原因&#xff1a;idea没有将其识别为一个maven项目 解决方案&#xff1a;告诉idea&#xff0c;这是一个maven项目 1.1、如果右侧有Maven项目&#xff0c;刷新一下 1.2、左侧项目鼠标右键&#xff0c;添加Maven框架支持 若没有选择m…