项目-坦克大战学习-人机随机生成

想要做到人机随机生成我们需要做到以下几点

1,确定随机生成的位置

2,确定随机生成人机的样式

3,实例化人机

4,绘制人机

在项目中我们由三个位置让人机生成,但是每次生成人机就需要在3个位置中随机挑选一个,所以我们需要将三个位置储存成数组用来调用

private static Point[] Points=new Point[3]; //放置人机位置

Points[0].X = 0;
Points[0].Y = 0;
Points[1].X = 7 * 30;
Points[1].Y = 7 * 30;
Points[2].X = 14 * 30;
Points[2].Y = 14 * 30;

这样,我们就可以设置0到2的随机数传入数组索引随机调用坐标了

 Random rd = new Random();//生成随机数
 int rds=rd.Next(0, 3);//设置只能在0到3之间生成随机数,包含最小值不包含最大值
 Point pos = Points[rds];//创建一个坐标随机放置生成人机的位置

运行一次生成一个坐标

生成坐标后我们还需要随机生成人机的种类,需要创建一个renji类用来实例化人机

renji类和玩家类很像,都有是否移动,速度,四个方向的图片

但是由于我们人机类需要实例化4种人机所以图片对象不是固定的,我们可以将图片对象设置为传参

public renji(int x,int y,int speed,Bitmap up,Bitmap down,Bitmap left,Bitmap right)
{
    this.x = x;
    this.y = y;
    this.speed =speed;//速度

    BitmapUp = up;//设置对应方向图片
    BitmapDown = down;
    BitmapLeft = left;
    BitmapRight = right;
    Fangxiang = fangxiang.Down;
    //因为需要设置4种敌人所以将图片设置为传入的参数,在设置人机时传参调用
}

将四种方向的图片都设置为传参,然后将4种坦克全部实例化出来放进方法中方便调用

private static void renji1(int x,int y)//实例化人机Gray
{
    renji renji1 = new renji(x,y,4,Resources.GrayUp,Resources.GrayDown,Resources.GrayLeft,Resources.GrayRight);
//实例化人机
renjilist.Add(renji1);//将生成的人机放入列表
}
private static void renji2(int x,int y)//实例化人机Green
{
    renji renji1 = new renji(x, y,3, Resources.GreenUp, Resources.GreenDown, Resources.GreenLeft, Resources.GreenRight);
    //实例化人机
    renjilist.Add(renji1);//将生成的人机放入列表
}
private static void renji3(int x, int y)
{
    renji renji1 = new renji(x, y,2, Resources.QuickUp, Resources.QuickDown, Resources.QuickLeft, Resources.QuickUp);
    //实例化人机
    renjilist.Add(renji1);//将生成的人机放入列表
}
private static void renji4(int x, int y)
{
    renji renji1 = new renji(x, y ,5, Resources.SlowUp, Resources.SlowDown, Resources.SlowLeft, Resources.SlowRight);
    //实例化人机
    renjilist.Add(renji1);//将生成的人机放入列表
}

将实例化的人机放入renji类型的列表储存起来方便调用

然后设置人机生成条件,目前设置条件为运行60帧后(一秒后)生成一次,我们可以设置一个数,每当方法运行一次计数器就会加一,等到计数器加到60就向下运行人机生成的代码然后将计数器归0

public static void renji()//人机生成
     {
     int renjishencheng++;//每调用一次计数器加一
         if (renjishencheng <60) return;//如果计数器小于60次那么直接返回出去不调用下面代码
         Random rd = new Random();//生成随机数
         int rds=rd.Next(0, 3);//设置只能在0到3之间生成随机数,包含最小值不包含最大值
         Point pos = Points[rds];//创建一个坐标随机放置生成人机的位置
         Random renjird = new Random();//生成随机数设置人机种类
         int renjirds = renjird.Next(1, 5);//设置只能在1到5之间生成随机数,包含最小值不包含最大值
         switch(renjirds)//随机生成人机
         {
             case 1:
                 renji1(pos.X,pos.Y);
                 break;
                 case 2:
                 renji2(pos.X,pos.Y);
                 break;
                 case 3:
                 renji3(pos.X,pos.Y);
                 break;
                 case 4:
                 renji4(pos.X,pos.Y);                        
                 break;

         }
         renjishencheng = 0;//计数器归零
     }

这样,每一秒实例化一个人机出来

在update方法中绘制人机,用foreach方法遍历renjilist将检测到的renji类型绘制出来

foreach (renji renji in renjilist)//实例化人机
{
    renji.update();
}

将生成人机方法放入update,每秒在renjilist方法中生成一个renji信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

加密与安全_TOTP 一次性密码生成算法

文章目录 PreTOTP是什么TOTP 算法工作原理TOTP 生成公式TOTP 与 HOTP 的对比Code生成TOTP验证 TOTP使用场景小结 TOTP 与 HOTP 的主要区别TOTP 与 HOTP应用场景比较TOTP 与 HOTP安全性分析 Pre 加密与安全_HTOP 一次性密码生成算法 https://github.com/samdjstevens/java-tot…

基于Springboot vue应急物资供应管理系统设计与实现

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…

剖解最小栈

最小栈 思路&#xff1a; 1. 首先实例化两个栈&#xff0c;分别是stack用于存放数据&#xff0c;minstack用于存放最小值 2. 将第一个元素压入两个栈中&#xff0c;判断此时若minStack栈中为空&#xff0c;则表示压入的为第一个数据 if ( minStack.empty () ) { minStack.pus…

【GT240X】【04】你必须知道的 50 多个 Linux 命令

文章目录 一、介绍二、五十个linux命令一览表三、50个命令详解四、结论 你必须知道的 50 多个 Linux 命令 一、介绍 你经常使用 Linux 命令&#xff1f;今天&#xff0c;我们将介绍 50 多个你必须知道的 Linux 命令。下面列出的命令是一些最有用和最常用的 Linux 命令&#x…

IDEA 最新版创建 Sping Boot 项目没有 JDK8 选项的解决方案

问题 今天新建一个 Java 项目写 demo 时&#xff0c;发现 Idea 上只能勾选 Java 17、21、23 三个版本 解决方案 IDEA 页面创建 Spring 项目&#xff0c;其实是访问 spring initializr 去创建项目。我们可以通过阿里云国服去间接创建 Spring 项目。服务器 URL 地址替换为 ht…

蓝桥杯【物联网】零基础到国奖之路:十四. 扩展模块之温湿度传感器

蓝桥杯【物联网】零基础到国奖之路:十四. 扩展模块之温湿度传感器 第一节 硬件解读第二节 CubeMX配置第三节 模版代码 第一节 硬件解读 STS3x-DIS是sensirion新一代温湿度传感器。精度较高&#xff0c;速度较快。SHT3x内部集成了湿度传感器和温度传感器&#xff0c;ADC采样输入…

[网络]抓包工具介绍 tcpdump

一、tcpdump tcpdump是一款基于命令行的网络抓包工具&#xff0c;可以捕获并分析传输到和从网络接口流入和流出的数据包。 1.1 安装 tcpdump 通常已经预装在大多数 Linux 发行版中。如果没有安装&#xff0c;可以使用包管理器 进行安装。例如 Ubuntu&#xff0c;可以使用以下…

9-贪心算法

参考&#xff1a;代码随想录 题目分类大纲如下&#xff1a; 贪心算法理论基础 什么是贪心&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心的套路&#xff08;什么时候用贪心&#xff09; 贪心算法并没有固定的套路&#xff0c;说白了…

OpenSource - 开源WAF_SamWaf

文章目录 PreSafeLine VS SamWaf开发初衷软件介绍架构界面主要功能 使用说明下载最新版本快速启动WindowsLinuxDocker 启动访问升级指南自动升级手动升级 在线文档 代码相关代码托管介绍和编译已测试支持的平台测试效果 安全策略问题反馈许可证书贡献代码 Pre Nginx - 集成Mod…

Java继承、final/protected说明、super/this辨析

目录 1.什么是继承 2.继承的特征 3.子类构造方法 4.super和this辨析 5.再谈初始化 6.protected关键字用法说明 7.final的用法说明 1.什么是继承 上面的这个animal就是基类&#xff0c;我们的这个dog和bird都是继承这个基类的特征&#xff0c;使用的是extends这个关键字&a…

Python编写的贪吃蛇小游戏

安装包 pip install pygame完整代码 import pygame import randompygame.init()# 定义颜色 white (255, 255, 255) black (0, 0, 0) red (213, 50, 80) green (0, 255, 0) blue (50, 153, 213)# 定义屏幕大小 dis_width 800 dis_height 600dis pygame.display.set_mo…

【大数据入门 | Hive】函数{单行函数,集合函数,炸裂函数,窗口函数}

1. 函数简介&#xff1a; Hive会将常用的逻辑封装成函数给用户进行使用&#xff0c;类似于Java中的函数。 好处&#xff1a;避免用户反复写逻辑&#xff0c;可以直接拿来使用。 重点&#xff1a;用户需要知道函数叫什么&#xff0c;能做什么。 Hive提供了大量的内置函数&am…

Redis操作常用API

说明&#xff1a;Redis应用于java项目中&#xff0c;操作Redis数据可以使用API&#xff0c;相较于命令行更方便。使用前&#xff0c;需先添加依赖。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-re…

云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展

本文根据2024云栖大会实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a; 王 峰 | 阿里云智能集团研究员、开源大数据平台负责人 李 钰&#xff5c;阿里云智能集团资深技术专家 范 振&#xff5c;阿里云智能集团高级技术专家 李劲松&#xff5c;阿里云…

【机器学习基础】Transformer学习

Transformer学习 一、输入1. Word Embedding2. Positional EncodingPositional Encoding的计算方法二、自注意力机制二、Add & Norm层1. Add 代表残差连接(Residual Connection)2. Norm= Normalization归一化三、FeedForward层其他资料一、输入 第一步:获取输入句子的每…

基于微信小程序的四六级词汇+ssm(lw+演示+源码+运行)

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;四六级词汇小程序被用户普遍使用&#xff0c;为方便用户能…

银河麒麟V10 SP1如何进入救援模式?

银河麒麟V10 SP1如何进入救援模式&#xff1f; 1、准备工作2、进入BIOS/UEFI进入救援模式注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在使用银河麒麟高级服务器操作系统V10 SP1时&#xff0c;如果遇到系统无法正常启动或需要进…

搭建基于H.265编码的RTSP推流云服务器

一、前言 网上能够找到的RTSP流地址&#xff0c;均是基于H.264编码的RTSP流地址&#xff0c;无法测试应用是否可以播放H265实时流为此&#xff0c;搭建本地的把H.264转码成H.265的RTSP服务器&#xff0c;不管是通过VLC搭建本地RTSP服务器&#xff0c;还是通过FFmpeg搭建本地RT…

关于HTML 案例_个人简历展示01

案例效果展示 代码 <!DOCTYPE html> <lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>个人简历信息</title> </he…

win11/win10/windows下快安装并使用git

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Git 的特点&#xff1f;二、GIT安装方法1.打开GIT官网2.下载git安装程序整个安装过程基本上直接用默认选项就可以 总结 前言 提示&#xff1a;GIT介绍 GI…