设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
C#—UDP通讯—双机五子棋小游戏Ⅰ
返回列表
发新帖
[西门子]
C#—UDP通讯—双机五子棋小游戏Ⅰ
[复制链接]
7835
|
0
|
2024-9-13 09:11:26
|
显示全部楼层
|
阅读模式
---C#(C-Sharp)语言----
C#(C-Sharp)是一种现代的面向对象的编程语言,由微软开发,旨在为构建各种类型的应用程序提供强大的功能。其优点如下:
语法简洁清晰:C#借鉴了C和Java等语言的优点,同时去除了其中的一些复杂性,使得代码更易于阅读和编写。面向对象:C#完全支持面向对象编程(OOP),包括封装、继承和多态性。安全性:由于C#运行在.NET Framework或.NET Core上,它提供了内存安全机制,有助于防止一些常见的编程错误如缓冲区溢出。垃圾回收机制:C#的自动垃圾回收机制管理应用程序的内存使用情况,使得程序员不需要手动释放未使用的内存。与.NET Framework集成:C#是为.NET Framework设计的,能够充分利用.NET提供的类库,从而加快开发速度。广泛的平台支持:随着.NET Core的推出,C#现在可以跨多个平台(Windows、macOS、Linux)运行,这增加了它的灵活性和可用性。LINQ:Language Integrated Query(语言集成查询)是C#的一个重要特性,它允许开发者以接近自然语言的方式查询数据集合。异步编程支持:C#引入了async/await关键字,使得编写非阻塞的异步代码变得更加简单和高效。现代化的语言特性:C#不断更新,引入了诸如动态类型、匿名类型、扩展方法、模式匹配等新特性,使得编程更加灵活和强大。
---UDP通讯---
UDP通讯是网络信息传输的另一种形式。与TCP通讯不同的是,UDP的信息传递更快,但不提供可靠的保证。如果需要较快的传输信息,并可以忍受小的错误,可以考虑UDP协议。UDP通信的基本模式:
将数据打包,然后将数据包发往目的地。
接受数据包,在查看数据包。
----游戏效果----使用C#语言开发一个一对一的局域网五子棋游戏。其效果图如下:
----设计思路----
确定游戏规则。
可以重新开始游戏,同时清除棋盘中的棋子。
保证在局域网中信息能正常的传递,需要定义一个UDP控件。
用二维数组记入棋子,通过遍历来计算黑棋或是白棋取胜。
----主要算法----
定义一个类,用于记录服务端和客户端的基本信息,然后通过自定义的方法获取服务端的IP地址
// 显示主机名string hostname = Dns.GetHostName();// 显示每个IP地址IPHostEntry hostent = Dns.GetHostEntry(hostname); // 主机信息Array addrs = hostent.AddressList; // IP地址数组IEnumerator it = addrs.GetEnumerator(); // 迭代器,添加名命空间using System.Collections;while (it.MoveNext()){ // 循环到下一个IP 地址 IPAddress ip = (IPAddress)it.Current; //获得IP地址,添加名命空间using System.Net;return ip.ToString();}return"";然后通过建立自定义方法,来判断棋子的类型和位置,最终确定何方取胜。(因代码过长只取了其中一种查找方式)int BCount = 1;CKind = -1;//横向查找bool Lbol = true;bool Rbol = true;int jlsf = 0;BCount = 1;for (int i = 1; i <= 5; i++){if ((Acolumn + i) > 14) //如果棋子超出最大列数 Rbol = false;if ((Acolumn - i) < 0)//如果棋子超出最小列数 Lbol = false;if (Rbol == true) {if (note[Arow, Acolumn + i] == n)//如果横向向右有相同的棋子 ++BCount;else Rbol = false; }if (Lbol == true) {if (note[Arow, Acolumn - i] == n)//如果横向向左有相同的棋子 ++BCount;else Lbol = false; }if (BCount >= 5) //如果同类型的棋子数大于等于5 {if (n == 0)//黑棋方赢 Bwin();if (n == 1) //白棋方赢 Wwin(); jlsf = n;break; }-
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
mhqsky
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』