C#仿Windows XP自带的扫雷游戏
作者:敲代码两年半的练习生 发布时间:2023-07-30 07:40:48
标签:C#,扫雷游戏
本文实例为大家分享了C#仿Windows XP自带的扫雷游戏的具体代码,供大家参考,具体内容如下
1 题目描述:模仿Windows XP自带的扫雷游戏
定义一个30×30的二维数组,模仿Windows XP自带的扫雷游戏对这个二维数组进行随机布雷,要求至少布雷30个。游戏规则是:某个元素的值是一周(相邻8个位置)存在的地雷的个数。
2 源码详解
using System;
using System.Collections;
namespace Csharp5_3
{
class Program
{
static void Main(string[] args)
{
ArrayList arrayList = new();
ArrayList arrayList_map = new();
Random rd = new();
for (int i = 0; i < 900; i++)
{
if (rd.Next() % 20 == 0)
{
arrayList.Add(1);
}
else
{
arrayList.Add(0);
}
arrayList_map.Add(0);
}
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 30; ++j)
{
Console.Write(arrayList[i * 30 + j]);
Console.Write(" ");
}
Console.WriteLine();
}
Console.WriteLine();
for ( int i = 0; i < 30; i ++ )
{
for ( int j = 0; j < 30; j ++ )
{
// 判断八个方位是否有雷,将雷相加
// 判断上
if (((i - 1) * 30 + j) >= 0 && ((i - 1) * 30 + j) < 900 && j != 0) // 边界值判断
{
if (Convert.ToInt32(arrayList[i * 30 + j - 30]) == 1)
{
arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1;
}
}
// 判断下
if (((i + 1) * 30 + j) >= 0 && ((i + 1) * 30 + j) < 900 && j != 29) // 边界值判断
{
if (Convert.ToInt32(arrayList[i * 30 + j + 30]) == 1)
{
arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1;
}
}
// 判断左
if ((i * 30 + j - 1) >= 0 && (i * 30 + j -1) < 900 && j != 0) // 边界值判断
{
if (Convert.ToInt32(arrayList[i * 30 + j -1]) == 1)
{
arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1;
}
}
// 判断右
if ((i * 30 + j + 1) >= 0 && (i * 30 + j + 1) < 900 && j != 29) // 边界值判断
{
if (Convert.ToInt32(arrayList[i * 30 + j + 1]) == 1)
{
arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1;
}
}
// 判断左上
if (((i - 1) * 30 + j -1 ) >= 0 && ((i - 1) * 30 + j - 1) < 900 && j != 0) // 边界值判断
{
if (Convert.ToInt32(arrayList[(i - 1) * 30 + j - 1]) == 1)
{
arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1;
}
}
// 判断左下
if (((i + 1) * 30 + j - 1) >= 0 && ((i + 1) * 30 + j - 1) < 900 && j != 29) // 边界值判断
{
if (Convert.ToInt32(arrayList[(i + 1) * 30 + j - 1]) == 1)
{
arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1;
}
}
// 判断右上
if (((i - 1) * 30 + j + 1) >= 0 && ((i - 1) * 30 + j + 1) < 900 && j != 0) // 边界值判断
{
if (Convert.ToInt32(arrayList[(i - 1) * 30 + j + 1]) == 1)
{
arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1;
}
}
// 判断右下
if (((i + 1) * 30 + j + 1) >= 0 && ((i + 1) * 30 + j + 1) < 900 && j != 29) // 边界值判断
{
if (Convert.ToInt32(arrayList[(i + 1) * 30 + j + 1]) == 1)
{
arrayList_map[i * 30 + j] = Convert.ToInt32(arrayList[i * 30 + j]) + 1;
}
}
}
}
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 30; ++j)
{
Console.Write(arrayList_map[i * 30 + j]);
Console.Write(" ");
}
Console.WriteLine();
}
Console.Read();
}
}
}
3 实现效果
来源:https://blog.csdn.net/Gyangxixi/article/details/115347458
0
投稿
猜你喜欢
- 做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件–AP
- 女朋友他们项目用了 spring-boot,以 spring-boot-parent 作为 parent:<parent> &l
- 如下所示:import java.util.ArrayList;//java中申请不定长度数组public class Test01 {pu
- 前言JavaEE(Java Enterprise Edition),Java企业版,是一个用于企业级web开发平台。最早由Sun公司定制并发
- ThymeleafThymeleaf是最近SpringBoot推荐支持的模板框架,官网在thymeleaf.org这里。我们为什么要用Thy
- 背景环境已学习java基础,html,css,js,jquery,bootstrap,layui,maven,servlet和jsp,刚进入
- 在线用户使用HttpSessionListener * 统计 每当一个session会话建立 在线用户人数+1每当一
- 前言在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,例如使用devtool来实现
- Lambda表达式无法抛出异常1.Demo 例子错误提示 - Unhandled exception: java.io.IOExceptio
- 这篇文章主要介绍了java多线程加锁以及Condition类的使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- Feign的作用是将Http请求抽象化为一个Interface客户端,可以调用接口的形式来执行Http请求,以达到简化Http调用的目的。F
- 抽象类(abstract):抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有
- import java.io.UnsupportedEncodingException;import java.security.Inval
- MyBatis提供了 * 接口,我们可以实现自己的 * ,将其作为一个plugin装入到SqlSessionFactory中。 首先要说的是
- BitArray的基础可以看菜鸟编程BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),
- Servlet 实现文件上传所谓文件上传就是将本地的文件发送到服务器中保存。例如我们向百度网盘中上传本地的资源或者我们将写好的博客上传到服务
- 解释:二叉树的深度:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。二叉树的宽度:二叉树的每一层中
- 1、AOP基本总结连接点(JoinPoint):连接点是程序运行的某个阶段点,如方法调用、异常抛出等切入点(Pointcut):切入点是Jo
- Spring是什么?我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃
- 本文实例讲述了JFreeChart插件实现的折线图效果。分享给大家供大家参考,具体如下:package com.lei.jfreechart