微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb.net – ‘自我意识’课程?

长时间读者第一次海报.请温柔.

我热衷于在VB.net中创建游戏.作为一个业余爱好程序员,我免费赠送我的游戏.由于我是一个没有正式训练的爱好者,我确实尝试并教育自己正确的编程原则,并在编写OOP时遵循它们.然而,有些事情我显然错过了自学,也许我会知道我是否接受过正规教育.

一旦真正成为我的祸害的问题是不同的类(从现在开始称为对象)如何“了解”彼此没有编程特定的交互(请留在这里……请…)

好的想象一下,你有一个太空游戏和以下物品

> clsShip
> clsMissile
> clsAsteroid
> clsspaceJunk

现在,这些对象中的每一个都有一个Health,X,Y和Z私有成员和属性,这些成员和属性都是为了参数而从clsspaceEntity继承而来.现在,它们之间编程碰撞的一种方法是在主游戏循环中编写以下逻辑

对于船舶清单中的每艘船舶
检查列表中的每个clsMissile以查看它是否与它发生冲突,如果是,则降低运行状况
检查列表中的每个clsAsteroid是否与它发生冲突,则降低运行状况
检查每个clsspaceJunka列表以查看它是否与它发生冲突,则降低运行状况
…等等每个对象
一个

等…

现在,如果您谈论上面的简单示例,但是我的一些游戏有几十甚至几百个以这种基本方式交互的对象,那么这可能会好转.

现在我向经验丰富的程序员提问.

OOP中是否有办法执行以下操作…

对于从clsspaceEntity继承的每个东西
检查继承此类型的所有其他对象(除了它自己)以及它们是否发生冲突然后降低运行状况
一个

对于某种类型的对象/类或任何“了解”另一个对象以及它们如何相同/不同并且相互作用的这种能力将节省我吨和吨和编码的TONnes.

任何帮助/帮助或反馈都将非常感激.感谢您的时间,对不起阅读.

您应该创建一个包含所有实体的List(Of SpaceEntity),而不是为每个派生对象提供单独的List(Of T).

然后,您可以创建一个嵌套的For Each循环,循环遍历每对实体并进行冲突检查. (在if x<> y检查之后)

您可以通过为SpaceEntity提供MustOverride函数来处理与其他对象的冲突,而不会使用每个实体的单独逻辑污染碰撞循环,从而进一步增强您的设计.
您应该使用visitor pattern来允许实体对与不同其他类型的实体的冲突做出不同的反应.

请注意,每次碰撞都将被发送到两个单独碰撞的对象;你需要在你的逻辑中处理它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr