C#实现洗牌游戏实例
作者:shichen2014 发布时间:2021-07-07 00:45:29
标签:C#,游戏
棋牌类游戏是目前比较火的游戏之一。今天本文就以实例形式实现洗牌游戏。本文实例所采用的算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。
运行结果如下图所示:
对于牌来讲,2个关键的因素是面值和类型(如红桃、梅花等)。
代码如下:
public class Card
{
private string mianzhi;
private string leixin;
public Card(string m, string l)
{
mianzhi = m;
leixin = l;
}
public override string ToString()
{
return leixin + " " + mianzhi;
}
}
客户端程序有3个方法,一个是初始化牌的数组,一个是遍历所有牌并显示,还有一个是使用算法洗牌。
具体实现代码如下:
class Program
{
private static Card[] allCards = new Card[52];
private static string[] ms = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
private static string[] ls = { "红桃", "方块", "梅花", "黑桃" };
static void Main(string[] args)
{
Init();
ShowAllCards();
Console.WriteLine("\r\n");
Shuffle();
ShowAllCards();
Console.ReadKey();
}
private static void Shuffle()
{
Random r = new Random();
Card tempCard;
//依次遍历所有牌与随机位置上的牌交换位置
for (int i = 0; i < allCards.Length; i++)
{
int ran = r.Next(52);
tempCard = allCards[i];
allCards[i] = allCards[ran];
allCards[ran] = tempCard;
}
}
private static void Init()
{
for (int i = 0; i < allCards.Length; i++)
{
allCards[i] = new Card(ms[i % 13],ls[i%4]);
}
}
private static void ShowAllCards()
{
foreach (var item in allCards)
{
Console.Write(item.ToString() + " ");
}
}
}
希望本文所述实例对大家的算法学习能有所帮助。


猜你喜欢
- 先看看效果: 首先,导入包:compile files('libs/nineoldandroids-2.4.0.jar')r
- spring的事务控制本质上是通过aop实现的。在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的
- 加坐标可以使用https://mvnrepository.com/来查找先加以下坐标:使用的数据库介绍:配置连接数据库:spring: &n
- 目录有状态组件异步 async/await引入 flutter_easyrefresh使用 flutter_easyrefresh运行结果结
- 本文实例为大家分享了Android蒙版弹出框效果的具体代码,供大家参考,具体内容如下自定义package cn.lxsdb.yyd.app.
- 概述异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。异常提供了一种把程序控制权从某个部
- 前言我们可能听过C语言中的传值和传指针,在其他语言中,也有传引用一说,那么他们到底有什么区别呢?如果你还不能准确地分辨,就该好好了解一下了。
- 先看一下效果图:<?xml version="1.0" encoding="utf-8"?&g
- jar与warSpring Boot项目开发完成后,需要以jar或war的方式将项目打包部署到测试开发环境。jar即Java Archive
- 最近在调试程序,想把过程中需要查看的数据输出到文件中,因此将简单的小方法分享一下1.首先需要声明一个文件指针变量FILE* fp;2.接下来
- Optional在JAVA中被定义为一个容器类,更确切的说只存一个元素的容器。container object which may or m
- 本文实例讲述了Java实现的日期处理类。分享给大家供大家参考,具体如下:开发中常常要使用日期,先小结如下,以备后用。import java.
- js和python是两种语言,js处理网页数据,python可作为服务端开发,两者通过websocket进行通信。websocket是soc
- @RequestBody搭配@Data的坑如果用@Data修饰实体类,里面的属性最好不要用连续几个相同字母,如果用千万别用大写。比如下面这个
- 简介Pyjnius是一个用于访问Java类的Python库。适用场景:极个别的加密算法等内容,用python不方便实现或者实现较耗时,可基于
- (一)什么是微服务网关后端写完所有的微服务之后,最终是要交给前端去调用。我们都知道每个微服务都有各自的端口号,如果前端直接通过IP加端口的方
- * 惯,先上图,着急用的朋友,直接带走Demo,先拿来用吧,毕竟老板催的紧,先把工作完成了,再看也来得及,是吧!在项目中这种添加图片上传的效
- Android设备用久了,截屏是个麻烦事。更麻烦的是通过qq传到电脑上,倒腾半天。其实用adb命令就可以截屏,然后写个pull的语句就可以拉
- 近期很多小伙伴问我,为何启动项目的时候Spring 或 Spring MVC资源文件找不到
- 本文实例讲述了C#操作CSV文件类。分享给大家供大家参考。具体分析如下:这个C#类用于转换DataTable为CSV文件、CSV文件转换成D