C#示例(一):飞行棋游戏

news2025/2/8 5:09:53

1、先看一下实现效果

输入连个玩家的姓名
在这里插入图片描述

两个玩家分别用字母A和字母B表示
在这里插入图片描述
按下任意键开始掷骰子、根据骰子走对应的步数…

在这里插入图片描述

2、绘制游戏头

/// <summary>
        /// 画游戏头
        /// </summary>
        public static void GameShow()
        {
            Console.ForegroundColor = ConsoleColor.Blue;//设置颜色
            Console.WriteLine("欢迎来到不写八个飞行棋");
            Console.WriteLine("▼▼▼▼▼");
        }

在这里插入图片描述

3、输入玩家姓名

#region 输入玩家姓名
            Console.WriteLine("请输入玩家A的姓名:");
            PlayerNames[0] = Console.ReadLine();
            while (PlayerNames[0] == "")
            {
                Console.WriteLine("玩家A的姓名不能为空,请重新输入:");
                PlayerNames[0] = Console.ReadLine();
            }

            Console.WriteLine("请输入玩家B的姓名:");
            PlayerNames[1] = Console.ReadLine();
            while (PlayerNames[1] == "" || PlayerNames[1] == PlayerNames[0])
            {
                if (PlayerNames[1] == "")
                {
                    Console.WriteLine("玩家B的姓名不能为空,请重新输入:");
                    PlayerNames[1] = Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("玩家B的姓名不能与玩家A的姓名相同,请重新输入:");
                    PlayerNames[1] = Console.ReadLine();
                }
            }
            #endregion
            //玩家姓名输入之后,我们首先应该清屏
            Console.Clear();

在这里插入图片描述

4、初始化地图

/// <summary>
        /// 初始化地图
        /// </summary>
        public static void InitailMap()
        {
            int[] LuckTurn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘
            for (int i = 0; i < LuckTurn.Length; i++)
            {
                int index = LuckTurn[i];//获取幸运轮盘的下标
                Maps[index] = 1;
            }

            int[] LandMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷
            for (int i = 0; i < LandMine.Length; i++)
            {
                Maps[LandMine[i]] = 2;
            }

            int[] Pause = { 9, 27, 60, 93 };//暂停
            for (int i = 0; i < Pause.Length; i++)
            {
                Maps[Pause[i]] = 3;
            }

            int[] TimeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道
            for (int i = 0; i < TimeTunnel.Length; i++)
            {
                Maps[TimeTunnel[i]] = 4;
            }
        }

5、绘制地图

/// <summary>
        /// 画地图
        /// </summary>
        public static void DrawMap()
        {
            Console.WriteLine("图例:幸运轮盘:◎  地雷:★  暂停:▼  时空隧道:▓");
            #region 第一横行
            for (int i = 0; i < 30; i++)
            {
                Console.Write(DrawStringMap(i));
            }
            //画完第一横行之后应该换行
            Console.WriteLine();
            #endregion
            
            #region 第一列
            for (int i = 30; i < 35; i++)
            {
                for (int j = 0; j <= 28; j++)
                {
                    Console.Write("  ");
                }
                Console.Write(DrawStringMap(i));
                Console.WriteLine();
            }
            #endregion

            #region 第二横行
            for (int i = 64; i >= 35; i--)
            {
                Console.Write(DrawStringMap(i));
            }
            Console.WriteLine();
            #endregion

            #region 第二列
            for (int i = 65; i <= 69; i++)
            {
                Console.WriteLine(DrawStringMap(i));
            }
            #endregion

            #region 最后一行
            for (int i = 70; i <= 99; i++)
            {
                Console.Write(DrawStringMap(i));
            }
            #endregion

            Console.WriteLine();

        }//DrawMap

6、开始玩游戏

/// <summary>
        /// 玩游戏
        /// </summary>
        public static void PlayGame(int PlayerNumber)
        {
            Random rd = new Random();
            int rNumber = rd.Next(1, 7);
            Console.WriteLine("{0}按任意键开始掷骰子", PlayerNames[PlayerNumber]);
            Console.ReadKey(true);//设置其参数为true则玩家按下的键不会再控制台显示
            Console.WriteLine("{0}掷出了{1}", PlayerNames[PlayerNumber], rNumber);
            PlayerPops[PlayerNumber] += rNumber;
            ChangePops();
            Console.ReadKey(true);
            Console.WriteLine("{0}按任意键开始行动", PlayerNames[PlayerNumber]);
            Console.ReadKey(true);
            Console.WriteLine("{0}行动完了", PlayerNames[PlayerNumber]);
            Console.ReadKey(true);

            if (PlayerPops[PlayerNumber] == PlayerPops[1-PlayerNumber])//踩到了另外一个玩家
            {
                Console.WriteLine("{0}玩家踩到了{1}玩家,{2}玩家退六格", PlayerNames[PlayerNumber], PlayerNames[1-PlayerNumber], PlayerNames[1-PlayerNumber]);
                PlayerPops[1 - PlayerNumber] -= 6;
                ChangePops();
                Console.ReadKey(true);
            }
            else//踩到了关卡
            {
                switch (Maps[PlayerPops[PlayerNumber]])
                {
                    case 0: Console.WriteLine("玩家{0}踩到了方块,安全", PlayerNames[PlayerNumber]);
                        Console.ReadKey(true);
                        break;
                    case 1: Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择1--交换位置 2--轰炸对方", PlayerNames[PlayerNumber]);
                        string input = Console.ReadLine();
                        while (true)
                        {
                            if (input == "1")
                            {
                                Console.WriteLine("玩家{0}和玩家{1}交换位置", PlayerNames[PlayerNumber], PlayerNames[1-PlayerNumber]);
                                Console.ReadKey(true);
                                int temp = PlayerPops[PlayerNumber];
                                PlayerPops[PlayerNumber] = PlayerPops[1 - PlayerNumber];
                                PlayerPops[1 - PlayerNumber] = temp;
                                Console.WriteLine("交换完成!!!按任意键继续游戏");
                                Console.ReadKey(true);
                                break;
                            }
                            else if (input == "2")
                            {
                                Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}退六格", PlayerNames[PlayerNumber], PlayerNames[1 - PlayerNumber], PlayerNames[1 - PlayerNumber]);
                                Console.ReadKey(true);
                                PlayerPops[1 - PlayerNumber] -= 6;
                                ChangePops();
                                Console.WriteLine("玩家{0}退了六格", PlayerNames[1 - PlayerNumber]);
                                Console.ReadKey(true);
                                break;
                            }
                            else
                            {
                                Console.WriteLine("只能输入1或2 1--交换位置  2--轰炸对方");
                                input = Console.ReadLine();
                            }
                        }
                        break;
                    case 2: Console.WriteLine("玩家{0}踩到了地雷,退六格", PlayerNames[PlayerNumber]);
                        PlayerPops[PlayerNumber] -= 6;
                        ChangePops();
                        Console.ReadKey(true);
                        break;
                    case 3: Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerNames[PlayerNumber]);
                        Flags[PlayerNumber] = true;
                        Console.ReadKey(true);
                        break;
                    case 4: Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerNames[PlayerNumber]);
                        PlayerPops[PlayerNumber] += 10;
                        ChangePops();
                        Console.ReadKey(true);
                        break;
                }//switch
            }//else
            ChangePops();
            Console.Clear();
            DrawMap();
        }

7、整体代码

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _04飞行棋游戏
{
    public class Program
    {
        static int[] Maps = new int[100];
        //声明一个静态数组来存储玩家A和玩家B的坐标
        static int[] PlayerPops = new int[2];
        //存储两个玩家的姓名
        static string[] PlayerNames = new string[2];
        //两个玩家的标记
        static bool[] Flags = new bool[2];//flags[0]是玩家A的标记,默认是flase,flags[1]是玩家B的标记,默认是flase
        
        static void Main(string[] args)
        {
            GameShow();
            #region 输入玩家姓名
            Console.WriteLine("请输入玩家A的姓名:");
            PlayerNames[0] = Console.ReadLine();
            while (PlayerNames[0] == "")
            {
                Console.WriteLine("玩家A的姓名不能为空,请重新输入:");
                PlayerNames[0] = Console.ReadLine();
            }

            Console.WriteLine("请输入玩家B的姓名:");
            PlayerNames[1] = Console.ReadLine();
            while (PlayerNames[1] == "" || PlayerNames[1] == PlayerNames[0])
            {
                if (PlayerNames[1] == "")
                {
                    Console.WriteLine("玩家B的姓名不能为空,请重新输入:");
                    PlayerNames[1] = Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("玩家B的姓名不能与玩家A的姓名相同,请重新输入:");
                    PlayerNames[1] = Console.ReadLine();
                }
            }
            #endregion
            //玩家姓名输入之后,我们首先应该清屏
            Console.Clear();
            GameShow();
            Console.WriteLine("{0}的士兵用A表示", PlayerNames[0]);
            Console.WriteLine("{0}的士兵用B表示", PlayerNames[1]);
            InitailMap();
            DrawMap();

            //当玩家A和玩家B都不在终点的时候,游戏继续
            while (PlayerPops[0] < 99 && PlayerPops[1] < 99)
            {
                if (Flags[0] == false)
                {
                    PlayGame(0);
                }
                else
                {
                    Flags[0] = false;
                }
                if (PlayerPops[0] >= 99)
                {
                    Console.WriteLine("玩家{0}赢了玩家{1}", PlayerNames[0], PlayerNames[1]);
                    break;
                }

                if (Flags[1] == false)
                {
                    PlayGame(1);
                }
                else
                {
                    Flags[1] = false;
                }
                if (PlayerPops[1] >= 99)
                {
                    Console.WriteLine("玩家{0}赢了玩家{1}", PlayerNames[1], PlayerNames[0]);
                    break;
                }
            }//while
            Win();
            Console.ReadKey();
        }
        /// <summary>
        /// 画游戏头
        /// </summary>
        public static void GameShow()
        {
            Console.ForegroundColor = ConsoleColor.Blue;//设置颜色
            Console.WriteLine("欢迎来到不写八个飞行棋");
            Console.WriteLine("▼▼▼▼▼");
        }

        /// <summary>
        /// 初始化地图
        /// </summary>
        public static void InitailMap()
        {
            int[] LuckTurn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘
            for (int i = 0; i < LuckTurn.Length; i++)
            {
                int index = LuckTurn[i];//获取幸运轮盘的下标
                Maps[index] = 1;
            }

            int[] LandMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷
            for (int i = 0; i < LandMine.Length; i++)
            {
                Maps[LandMine[i]] = 2;
            }

            int[] Pause = { 9, 27, 60, 93 };//暂停
            for (int i = 0; i < Pause.Length; i++)
            {
                Maps[Pause[i]] = 3;
            }

            int[] TimeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道
            for (int i = 0; i < TimeTunnel.Length; i++)
            {
                Maps[TimeTunnel[i]] = 4;
            }
        }

        /// <summary>
        /// 画地图
        /// </summary>
        public static void DrawMap()
        {
            Console.WriteLine("图例:幸运轮盘:◎  地雷:★  暂停:▼  时空隧道:▓");
            #region 第一横行
            for (int i = 0; i < 30; i++)
            {
                Console.Write(DrawStringMap(i));
            }
            //画完第一横行之后应该换行
            Console.WriteLine();
            #endregion
            
            #region 第一列
            for (int i = 30; i < 35; i++)
            {
                for (int j = 0; j <= 28; j++)
                {
                    Console.Write("  ");
                }
                Console.Write(DrawStringMap(i));
                Console.WriteLine();
            }
            #endregion

            #region 第二横行
            for (int i = 64; i >= 35; i--)
            {
                Console.Write(DrawStringMap(i));
            }
            Console.WriteLine();
            #endregion

            #region 第二列
            for (int i = 65; i <= 69; i++)
            {
                Console.WriteLine(DrawStringMap(i));
            }
            #endregion

            #region 最后一行
            for (int i = 70; i <= 99; i++)
            {
                Console.Write(DrawStringMap(i));
            }
            #endregion

            Console.WriteLine();

        }//DrawMap

        /// <summary>
        /// 从画地图的方法中抽象出来的一个方法
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public static string DrawStringMap(int i)
        {
            string str = "";
            #region 画图
            if (PlayerPops[0] == PlayerPops[1] && PlayerPops[1] == i)
            {
                str = "<>";
            }
            else if (PlayerPops[0] == i)
            {
                str = "A";
            }
            else if (PlayerPops[1] == i)
            {
                str = "B";
            }
            else
            {
                switch (Maps[i])
                {
                    case 0:
                        Console.ForegroundColor = ConsoleColor.Blue;
                        str = "□";
                        break;
                    case 1:
                        Console.ForegroundColor = ConsoleColor.Green;
                        str="◎";//幸运轮盘
                        break;
                    case 2:
                        Console.ForegroundColor = ConsoleColor.Magenta;
                        str="★";//地雷
                        break;
                    case 3:
                        Console.ForegroundColor = ConsoleColor.Red;
                        str="▼";//暂停
                        break;
                    case 4:
                        Console.ForegroundColor = ConsoleColor.Black;
                        str="▓";//时空隧道
                        break;
                }//switch
            }//else
            return str;
            #endregion
        }

        /// <summary>
        /// 玩游戏
        /// </summary>
        public static void PlayGame(int PlayerNumber)
        {
            Random rd = new Random();
            int rNumber = rd.Next(1, 7);
            Console.WriteLine("{0}按任意键开始掷骰子", PlayerNames[PlayerNumber]);
            Console.ReadKey(true);//设置其参数为true则玩家按下的键不会再控制台显示
            Console.WriteLine("{0}掷出了{1}", PlayerNames[PlayerNumber], rNumber);
            PlayerPops[PlayerNumber] += rNumber;
            ChangePops();
            Console.ReadKey(true);
            Console.WriteLine("{0}按任意键开始行动", PlayerNames[PlayerNumber]);
            Console.ReadKey(true);
            Console.WriteLine("{0}行动完了", PlayerNames[PlayerNumber]);
            Console.ReadKey(true);

            if (PlayerPops[PlayerNumber] == PlayerPops[1-PlayerNumber])//踩到了另外一个玩家
            {
                Console.WriteLine("{0}玩家踩到了{1}玩家,{2}玩家退六格", PlayerNames[PlayerNumber], PlayerNames[1-PlayerNumber], PlayerNames[1-PlayerNumber]);
                PlayerPops[1 - PlayerNumber] -= 6;
                ChangePops();
                Console.ReadKey(true);
            }
            else//踩到了关卡
            {
                switch (Maps[PlayerPops[PlayerNumber]])
                {
                    case 0: Console.WriteLine("玩家{0}踩到了方块,安全", PlayerNames[PlayerNumber]);
                        Console.ReadKey(true);
                        break;
                    case 1: Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择1--交换位置 2--轰炸对方", PlayerNames[PlayerNumber]);
                        string input = Console.ReadLine();
                        while (true)
                        {
                            if (input == "1")
                            {
                                Console.WriteLine("玩家{0}和玩家{1}交换位置", PlayerNames[PlayerNumber], PlayerNames[1-PlayerNumber]);
                                Console.ReadKey(true);
                                int temp = PlayerPops[PlayerNumber];
                                PlayerPops[PlayerNumber] = PlayerPops[1 - PlayerNumber];
                                PlayerPops[1 - PlayerNumber] = temp;
                                Console.WriteLine("交换完成!!!按任意键继续游戏");
                                Console.ReadKey(true);
                                break;
                            }
                            else if (input == "2")
                            {
                                Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}退六格", PlayerNames[PlayerNumber], PlayerNames[1 - PlayerNumber], PlayerNames[1 - PlayerNumber]);
                                Console.ReadKey(true);
                                PlayerPops[1 - PlayerNumber] -= 6;
                                ChangePops();
                                Console.WriteLine("玩家{0}退了六格", PlayerNames[1 - PlayerNumber]);
                                Console.ReadKey(true);
                                break;
                            }
                            else
                            {
                                Console.WriteLine("只能输入1或2 1--交换位置  2--轰炸对方");
                                input = Console.ReadLine();
                            }
                        }
                        break;
                    case 2: Console.WriteLine("玩家{0}踩到了地雷,退六格", PlayerNames[PlayerNumber]);
                        PlayerPops[PlayerNumber] -= 6;
                        ChangePops();
                        Console.ReadKey(true);
                        break;
                    case 3: Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerNames[PlayerNumber]);
                        Flags[PlayerNumber] = true;
                        Console.ReadKey(true);
                        break;
                    case 4: Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerNames[PlayerNumber]);
                        PlayerPops[PlayerNumber] += 10;
                        ChangePops();
                        Console.ReadKey(true);
                        break;
                }//switch
            }//else
            ChangePops();
            Console.Clear();
            DrawMap();
        }

        /// <summary>
        /// 当玩家坐标改变的时候
        /// </summary>
        public static void ChangePops()
        {
            if (PlayerPops[0] < 0)
            {
                PlayerPops[0] = 0;
            }

            if (PlayerPops[0] > 99)
            {
                PlayerPops[0] = 99;
            }

            if (PlayerPops[1] < 0)
            {
                PlayerPops[1] = 0;
            }

            if (PlayerPops[1] > 99)
            {
                PlayerPops[1] = 99;
            }
        }

        public static void Win()
        {
            Console.WriteLine("胜利胜利");
        }
    }
}

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

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

相关文章

CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)

目录 往期精彩内容&#xff1a; 前言 1 风速数据CEEMDAN分解与可视化 1.1 导入数据 1.2 CEEMDAN分解 2 数据集制作与预处理 2.1 划分数据集&#xff0c;按照8&#xff1a;2划分训练集和测试集&#xff0c; 然后再按照前7后4划分分量数据 2.2 设置滑动窗口大小为7&#…

SuperMap iClient3D for WebGL时序影像

文章目录 前言一、加载影像数据二、创建时间条1.这里使用Echarts来创建TimeLine&#xff0c;首先需要引入相关依赖2.初始化Echarts实例 三、设置不同年份影像交替显示四、效果 前言 时序影像可以用于对地球表面的变化进行定量分析和监测。 通过对多时相遥感影像的比较和分析&a…

【开源】基于Vue+SpringBoot的新能源电池回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…

铁山靠之——HarmonyOS组件 - 2.0

HarmonyOS学习第二章 一、HarmonyOS基础组件的使用1.1 组件介绍1.2 Text1.2.1 文本样式1.2.2 设置文本对齐方式1.2.3 设置文本超长显示1.2.4 设置文本装饰线 1.3 Image1.3.1 设置缩放类型1.3.2 加载网络图片 1.4 TextInput1.4.1 设置输入提示文本1.4.2 设置输入类型1.4.3 设置光…

了解基础魔法函数学会封装和继承新建模块和函数使用异常

一、魔法函数 1.1、概念&#xff1a; 魔法函数&#xff08;magic methods&#xff09;是指以双下划线开头和结尾的特殊方法&#xff0c;用于实现对象的特定行为和操作。这些魔法函数可以让我们自定义对象的行为&#xff0c;例如实现对象的比较、算术运算、属性访问等。常见的…

WPS复选框里打对号,显示小太阳或粗黑圆圈的问题解决方法

问题描述 WPS是时下最流行的字处理软件之一&#xff0c;是目前唯一可以和微软office办公套件相抗衡的国产软件。然而&#xff0c;在使用WPS的过程中也会出现一些莫名其妙的错误&#xff0c;如利用WPS打开docx文件时&#xff0c;如果文件包含复选框&#xff0c;经常会出…

博客摘录「 Apollo安装和基本使用」2023年11月27日

一、常见配置中心对比 Spring Cloud Config: https://github.com/spring-cloud/spring-cloud-configApollo: https://github.com/ctripcorp/apolloNacos: https://github.com/alibaba/nacos 对比项目/配置中心 spring cloud config apollo nacos(重点) 开源时间 2014.9 …

blender scripting 编写

blender scripting 编写 一、查看ui按钮对应的代码二、查看或修改对象名称三、案例&#xff1a;渲染多张图片并导出对应的相机参数 一、查看ui按钮对应的代码 二、查看或修改对象名称 三、案例&#xff1a;渲染多张图片并导出对应的相机参数 注&#xff1a;通过ui交互都设置好…

如何在Window系统下搭建Nginx服务器环境并部署前端项目

1.下载并安装Nginx 在nginx官网nginx: download 下载稳定版本至自己想要的目录。 解压后进入目录 2.启动Nginx服务器 启动方式有两种&#xff1a; &#xff08;1&#xff09;直接进入nginx安装目录下&#xff0c;双击nginx.exe运行&#xff0c;此时命令行窗口一闪而过&…

20231222给NanoPC-T4(RK3399)开发板的适配Android11的挖掘机方案并跑通AP6398SV

20231222给NanoPC-T4(RK3399)开发板的适配Android11的挖掘机方案并跑通AP6398SV 2023/12/22 7:54 简略步骤&#xff1a;rootrootrootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2 rootrootrootroot-X99-Turbo:~/3TB$ tar jxvf Android11.0.tar.…

【MySQL】数据库中为什么使用B+树不用B树

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 B树的特点和应用场景&#xff1a; B树相对于B树的优势&#xff1a; 结论&#xff1a; 结语 我的其他博客 前言 在数据…

超维空间S2无人机使用说明书——31、使用yolov8进行目标识别

引言&#xff1a;为了提高yolo识别的质量&#xff0c;提高了yolo的版本&#xff0c;改用yolov8进行物体识别&#xff0c;同时系统兼容了低版本的yolo&#xff0c;包括基于C的yolov3和yolov4&#xff0c;以及yolov7。 简介&#xff0c;为了提高识别速度&#xff0c;系统采用了G…

C# WPF上位机开发(子窗口通知父窗口更新进度)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 这两天在编写代码的时候&#xff0c;正好遇到一个棘手的问题&#xff0c;解决之后感觉挺有意义的&#xff0c;所以先用blog记录一下&#xff0c;后…

数组基础及相关例题

目录 1.一维数组的初始化 2.二维数组的初始化 3.字符数组 1.puts 2.gets 3.strcat 4.strcpy 5.strcmp 6.strlen ​编辑 7. strlwr与strupr 易错习题 1 2 3 4 5 6 1.一维数组的初始化 2.二维数组的初始化 注意 第一维的长度不用指定&#xff0c;第二维的…

WU反走样算法

WU反走样算法 由离散量表示连续量而引起的失真称为走样&#xff0c;用于减轻走样现象的技术成为反走样&#xff0c;游戏中称为抗锯齿。走样是连续图形离散为想想点后引起的失真&#xff0c;真实像素面积不为 零。走样是光栅扫描显示器的一种固有现象&#xff0c;只能减轻&…

FPGA分频电路设计(2)

实验要求&#xff1a; 采用 4 个开关以二进制形式设定分频系数&#xff08;0-10&#xff09;&#xff0c;实现对已知信号的分频。 类似实验我之前做过一次&#xff0c;但那次的方法实在是太笨了&#xff1a; 利用VHDL实现一定系数范围内的信号分频电路 需要重做以便将来应对更…

B+树索引和哈希索引的区别?

B树是一个平衡的多叉树&#xff0c;从根节点到每个叶子节点的高度差值不超过1&#xff0c;而且同层级的节点间有指针相互链接&#xff0c;是有序的&#xff0c;如下图&#xff1a; 哈希索引就是采用一定的哈希算法&#xff0c;把键值换算成新的哈希值&#xff0c;检索时不需要类…

STM32独立看门狗

时钟频率 40KHZ 看门狗简介 STM32F10xxx 内置两个看门狗&#xff0c;提供了更高的安全性、时间的精确性和使用的灵活性。两个看 门狗设备 ( 独立看门狗和窗口看门狗 ) 可用来检测和解决由软件错误引起的故障&#xff1b;当计数器达到给 定的超时值时&#xff0c;触发一个中…

MyBatis中select语句中使用String[]数组作为参数

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;无 &#x1f33c…

CMakeLists.txt

源码结构 生成可执行程序 # CMake最小版本号 cmake_minimum_required(VERSION 3.15.0)#增加-stdc11 set(CMAKE_CXX_STANDARD 11)#设置工程名称 project(calculate)#[[ #方法一&#xff1a;添加源码文件 #aux_source_directory(< dir > < variable >) #dir&#xf…