Welcome 微信登录

首页 / 软件开发 / C#

C#实现扫雷出炉

C#实现扫雷出炉

C#实现扫雷出炉2010-06-05 博客园 magicdlf前阵子想用C#写个扫雷,检验一下学习一年多C#的功力如何。扫雷的基本实现很简单,动态生成控件,然后用Controls.Add添加到窗口中,用随机数布雷,处理Mouse事件...最麻烦的事情不过是在点到空白地带的时候需要实现一个FloodFill算法。不过要实现一个十分接近Windows扫雷的版本,还是需要费一些周折的。首先需要找到资源文件,我是在百度知道上搜到的,或者从扫雷的资源文件里读取也可以...
C#写的网络版斗地主

C#写的网络版斗地主

C#写的网络版斗地主2010-06-05 博客园 猪笨无罪断断续续写了一个月,总算是把这个东西搞出来了。第一次写网络程序,所以网络部分很烂,如果网络延迟厉害的话就会出错。出牌规则和牌组之间的比较已经比较完善,能想到的组合方式都写上去了。由于本人学习C#的时间不长,而且是利用业余时间学习。所以技术不怎么样,写出来的代码总共2147行。质量个人觉得比较差劲,刚开始架构整个程序时还是按照面向对象的思考方式架构整个程序,但是架构了一部分之后后面的东西,比如网络,规...
C#网络版斗地主——网络部分实现

C#网络版斗地主——网络部分实现

C#网络版斗地主——网络部分实现2010-06-05 博客园 猪笨无罪本文是对C#网络版斗地主的总结,之后还有两篇,分别介绍地主权限的传递和出牌权限的传递,还有出牌算法和规则。服务器使用server类与客户端通讯,客户端使用client类与服务器通讯。当创建游戏时,new出一个server对象,并且开始监听默认端口“1991”。然后创建一个线程,用死循环while(true)检测是否有客户端连接,如果有的话获取Client对象,当获...
C#网络版斗地主——地主权限的传递

C#网络版斗地主——地主权限的传递

C#网络版斗地主——地主权限的传递2010-06-05 博客园 猪笨无罪本文是对C#网络版斗地主的总结。首先服务器使用一个随机数来随即选出默认地主。然后发送信息给选出来的玩家。玩家接收到信息后显示两个按钮“叫地主”,“不叫”。如果选择不叫,则把可以叫地主的权限发送给另外一个玩家,如果另外两个玩家都不要的话,就执行Restart()方法重新发牌。叫地主权限的传递顺序如下图所示:具体实现方法:服务器得到一个1-3...
C#网络版斗地主——出牌算法和规则

C#网络版斗地主——出牌算法和规则

C#网络版斗地主——出牌算法和规则2010-06-05 博客园 猪笨无罪本文是对C#网络版斗地主的开发总结,同时也是最后一篇。大家知道,斗地主这个游戏是将一些特有的牌组合成牌组然后来比较牌组的大小,那么,就应该给PokerGroup类定义一个属性type,即牌组的类型,type的值是一个枚举类型1 public enum PokerGroupType2 {3 单张 = 1,4 对子 = 2,5 双王 = 3,6 三张相同 = 4,7 三带一 = ...
C#网络版斗地主——出牌权限的传递

C#网络版斗地主——出牌权限的传递

C#网络版斗地主——出牌权限的传递2010-06-05 博客园 猪笨无罪本文是对C#网络版斗地主的开发总结。出牌顺序如上图所示。出牌权限可以用一个bool值表示在Player类中,有一个属性:haveOrder表示玩家是否有权限出牌。还需要考虑到一点,当一个玩家出牌后,其他玩家都要不起(pass),该玩家不能自己“要不起”自己,所以还需要一个bool类型的属性“IsBiggest”。该属性表示自己出的牌最大。...
C# 4.0中泛型协变性和逆变性详解

C# 4.0中泛型协变性和逆变性详解

C# 4.0中泛型协变性和逆变性详解2010-06-05 IT专家网 vivianVS2010的推出会为我们带来新版本的C#。了解C#4.0中的新功能有助于我们利用编码。它还能够帮助我们了解程序中正在出现,而下一代的C#有可能会解决的错误。最终,这样的实践可以帮助我们在现有的知识结构上创建适应C#4.0的业务。在本文中我们关注的是C# 4.0中的协变性和逆变性。恒定性,协变性和逆变性在进一步研究问题之前,我们先解释一下恒定性,协变性,逆变性参数以及返回类型...
再谈C#扫雷

再谈C#扫雷

再谈C#扫雷2010-06-05 博客园 magicdlf看来大家都很喜欢扫雷这个话题啊. 感谢大家指出了我代码里的问题,这里徐小侠写了一个很好的实现:http://www.cnblogs.com/Chinese-xu/archive/2009/04/29/1446415.html同时他指出我并没有完全按照面向对象的方法来设计,其实这个起源于我设计时候的一个初衷,在这里澄清一下.我一开始实现只个MineControl的时候,并没有考虑要将所有的逻辑都放到M...
趣味编程:C#中Specification模式的实现(参考答案 - 上)

趣味编程:C#中Specification模式的实现(参考答案 - 上)

趣味编程:C#中Specification模式的实现(参考答案 - 上)2010-06-05 博客园 赵劼Specification模式的作用是构建可以自由组装的业务逻辑元素。不过就上篇文章的示例来看,“标准”的Specification模式的实现还是比较麻烦的,简单的功能也需要较复杂的代码。不过,既然说是“标准”的方式,自然就是指可以在任意面向对象语言中使用的实现方式,不过我们使用的是C#,在实际开发过程中...
趣味编程:C#中Specification模式的实现(参考答案 - 下)

趣味编程:C#中Specification模式的实现(参考答案 - 下)

趣味编程:C#中Specification模式的实现(参考答案 - 下)2010-06-05 博客园 赵劼上一篇文章中我们利用C#语言的特性实现了一种轻量级的Specification模式,它的关键在于抛弃了具体的Specification类型,而是使用一个委托对象代替唯一关键的IsSatisfiedBy方法逻辑。据我们分析,其优势之一在于使用简单,其劣势之一在于无法静态表示。但是它们还都是在处理“业务逻辑”,如果涉及到一个用于LI...
从模拟字符串型的枚举说起

从模拟字符串型的枚举说起

从模拟字符串型的枚举说起2010-06-05 cnblogs.com allenlooplee1. 有字符串型的枚举吗?UK 在《关于枚举的种种》中提到这样一个问题:枚举的成员类型都是数值型的,如果想做一个字符型的枚举有什么办法?enum colors : string{ red="#ff0000", }在展开讨论之前,我认为有必要搞清楚另一个问题,上面代码中的 "#ff0000" 不是字符而是字符串,应改成 "#ff0000"...
C# 之不安全代码(1)

C# 之不安全代码(1)

C# 之不安全代码(1)2010-06-05 cnblogs.com DiggingDeeply主要参考的是C# Language Specification Version 3.0。引子C#是.Net平台上主流的开发语言,和经典的C/C++不同的是,C#所编写的代码是托管代码,由GC来管理内存,省去了new/delete的烦恼。但是,由于某些特殊的要求,比如和底层的操作系统接口,访问内存映射设备或者实现对时间要求苛刻的算法时,C#提供了不安全代码。不安全...
C# 之不安全代码(2)

C# 之不安全代码(2)

C# 之不安全代码(2)2010-06-05 cnblogs.com DiggingDeeply固定的和活动的变量&和fixed将变量分为两类:固定的和活动的。固定的变量永久的存在并不会被GC的操作影响。(例如局部变量,值参数和间接指针)活动的变量会被GC重新分配位置或是释放(例如对象中的字段,基础数据数组)。&取固定变量的地址是没有限制的。但是活动变量容易受GC的影响,其地址只能通过fixed来获得,并且地址仅会在整个fixed语句的周期...
Visual C# .NET入门

Visual C# .NET入门

Visual C# .NET入门2010-06-05 MSDN 简介Visual C# .NET是Visual Studio系列中的最新成员。这种新语言基于C/C++,但它深化了更容易地使用面向组件编程的发展方向。C/C++ 程序员应该非常熟悉它的语法。下面的示例应用程序示范了如何构建一个简单的实现 QuickSort 算法的 C# 项目。它包括了C# 程序的基本组成部分:读/写控制台和文件、创建函数和使用基本数组。这些入门指南并不打算涵盖该编程语言的所有...
博弈论中的简单合作博弈 C#实现

博弈论中的简单合作博弈 C#实现

博弈论中的简单合作博弈 C#实现2010-06-05 博客园 CareySon最近在看一本关于博弈的书.有个比较简单的合作不合作的博弈.挺有意思,大意是这样的:这个博弈是对现实生活中人与人之间是否合作的简单抽象,具体内容和规则可以概括为“如果A与B都是合作态度,则是双赢,每人得3分;如果A合作态度,B玩阴的,则A欺骗了B,取得了B本该得到的利益,则B得5分,A扣3分,反之亦然。最后如果A和B都不合作,则一拍两散,两个人都白费劲,则每人扣一分&r...
<< 131 132 133 134 135 136 137 138 139 140 >>