.NET C#-一个数组中的不同数组的数量
我在这里是新手,对C#有些不经验.我一直在搜索MSDN文档和Google,但找不到答案(我尝试尽可能地介绍它): 我想在列表或数组中存储一个固定长度的有序序列序列,然后制作这些整数数组的数组.有人知道我如何计算不同的整数数组的数量,以及我应该使用哪些特定数据类型(列表,普通数组等)?我没有我一直在使用的确切代码,但是这里有类似于我一直在尝试的东西: int[] set1 = {2, 56, 8}; int[] set2 = {8, 25, 90}; int[] set3 = {2, 56, 8}; var superset = new List; superset.Add(set1); superset.Add(set2); superset.Add(set3); Console.Out.WriteLine(superset.Distinct().Count()); // would like this to output 2, but Distinct
0 2023-05-25
编程技术问答社区
Java中的专用绘图面?
我想在Java中进行有效的2D图.我想拥有某种表面,我可以自由地绘制这些表面,而不必让视图层次结构穿越和更新,这可能会导致口吃. 我首先使用了jpanel,并称为Repaver(),但我发现这不是最佳的(这是我问的原因).我与之合作的最接近的事情是Android的 surfaceview 它给了我一个专用的图纸表面. 要达到这个专用的图纸表面,我需要使用opengl还是有任何等效的SurfaceView? 解决方案 如果您不需要加速图形,则可以使用Graphics2D绘制BufferedImage.将数据放在BufferedImage>中后,只需将BufferedImage涂在组件上即可.这将避免您在谈论的任何闪烁. 创建缓冲图很容易: int w = 800; int h = 600; BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); 然后,您可以使用图形
2 2023-05-24
编程技术问答社区
wpf 2d高性能图形
基本上,我想要WPF中的GDI-type功能,在那里我可以在其中写像素图并更新并通过WPF显示该位图.请注意,我需要能够通过响应鼠标运动来更新像素来即时制作刻度图.我读过,InteropbitMap非常适合此,因为您可以写入内存中的像素并将内存位置复制到位图 - 但我没有任何好的示例. 有人知道使用InteropbitMap或其他一些在WPF中使用高性能2D图形的互联网或其他类的博客吗? 解决方案 这是我发现的: 我创建了一个子类图像的类. public class MyImage : Image { // the pixel format for the image. This one is blue-green-red-alpha 32bit format private static PixelFormat PIXEL_FORMAT = PixelFormats.Bgra32; // the bitmap used as a pi
2 2023-05-23
编程技术问答社区
什么是Android上实时图形编程的最佳语言?
一些谷歌搜索使我相信C ++是实时2D图形编程的最佳语言,但是由于Android是基于Java的,这仍然是最好的选择吗?还是我们必须使用NDK将其放慢速度或其他事实?我的程序也有很多科学计算,我知道C ++最好/最快... 我以前从未对Android做任何事情,所以我现在真的很无助.如果我只是以错误的方式进行操作,请给我其他建议...我遇到的其他一些词汇是OpenGL(我有经验,但这更多的是3D,对吗?)和帆布(不要很明白)?如果我可以访问类似GPU的功能,那将很棒. 解决方案 Android应用程序是编写Java的,是的 - 但是,Android NDK允许您在C或C ++中编写程序的性能至关重要部分.来自Android ndk 网站, Android NDK是一个伴随工具 让您构建的Android SDK 您的关键绩效部分 本机代码中的应用程序.它提供 允许您的标题和图书馆 要构建活动,请处理用户 输入,使用硬件传感器,访问 应用程序资源等等 C或C ++的编程.
0 2023-05-23
编程技术问答社区
OpenGL ES中的大型滚动背景
我正在为iPhone制作2D滚动游戏.我有一个较大的图像背景,例如480×6000像素,只有一个零件是可见的(正好一个屏幕的价值,480×320像素).在屏幕上获得这样的背景的最佳方法是什么? 当前,我将背景分为几个纹理(以绕过最大纹理大小限制),并将每个帧中的整个背景作为纹理三角形带绘制.滚动是通过翻译模型视图矩阵完成的.剪刀盒设置为窗口大小,480×320像素.这并不意味着要快,我只是想要一个工作代码,然后才能进行优化. 我认为,也许OpenGL实现将足够聪明,可以丢弃背景的隐形部分,但是根据我写的一些测量代码,看起来背景平均需要7毫秒才能平均绘制,最大值为84毫秒. (这是在模拟器中测量的.)这大约是整个渲染循环的一半,即.对我来说很慢. 绘制背景应该像从VRAM的一部分复制约480×320像素一样容易,或者换句话说,快速燃烧.接近这种表现的最佳方法是什么? 解决方案 这是这样做的快速方法.您可以做的事情来提高性能: 尝试不同的纹理形式.大概是SDK
6 2023-05-23
编程技术问答社区
用WPF绘制数千个数据点的最有效方式?
我写了一个显示财务数据的图表.当我与PathFigure和PathFigure和LineSegment s一起使用PathGeometry的绘制小于10.000点时的性能是不错的.但是现在,我需要同时显示高达100.000点(不滚动),并且它的速度已经很慢,有50.000点.我在想StreamGeometry,但是我不确定,因为它基本上与PathGeometry跨度与字节流相同.是否有人有想法使这种表现更多,或者甚至有人已经做了类似的事情? 编辑:这些数据点一旦绘制就不会更改,因此,如果有潜力优化,请告诉我(现在冻结行段). 编辑:我尝试了流域.由于某种原因,创建图形花费甚至更长的时间,但这不是问题.在绘制所有点之后,在图表上绘制图表仍与上一个方法一样慢.我认为WPF要处理的数据点太多了. 编辑:我已经进行了一些实验,我注意到通过转换以前倍增的坐标以防止WPF抗稳定子像素线来提高性能. . 编辑:感谢所有响应,建议减少行段数量.我将它们减少到最多是阶梯线的水平分
14 2023-05-23
编程技术问答社区
快速找到图像中最近的非黑色像素
i具有随机且稀疏散布的像素的2D图像. 给定图像上的一点,我需要找到与不在背景颜色(黑色)的最接近像素的距离. 最快的方法是什么? 我唯一可以提出的方法是为像素构建KD-Tree.但是我真的很想避免如此昂贵的预处理.另外,似乎KD-TREE给了我的比我需要的要多.我只需要与某事的距离,我不在乎这是什么. 解决方案 正如Pyro所说,搜索正方形的周长,您一次从原始点(即一次将宽度和高度增加两个像素增加两个像素).当您击中非黑色像素时,您会计算距离(这是您的第一个昂贵的计算),然后继续向外搜索,直到盒子的宽度是到达第一个发现点的两倍(任何超出此点的任何点都无法更近)比您的原始像素).保存您在此部分中找到的任何非黑点,然后计算它们的每个距离,以查看它们是否比您的原始点更近. 在理想的发现中,您只需要进行一个昂贵的距离计算. update :由于您在此处计算像素到像素距离(而不是任意精度浮点位置),因此您可以通过使用预估算的查找表实质上加快此算法的速度(只是一个逐宽
0 2023-05-23
编程技术问答社区
用Quartz 2D解析pdf时获取文本位置
有关PDF解析的另一个问题... 只需阅读PDF参考版本1.7" 5.3.1文本位置操作员",我有点困惑. 我编写了一些代码以获取转换矩阵和初始文本位置. CGPDFOperatorTableSetCallback (table, "MP", &op_MP);//Define marked-content point CGPDFOperatorTableSetCallback (table, "DP", &op_DP);//Define marked-content point with property list CGPDFOperatorTableSetCallback (table, "BMC", &op_BMC);//Begin marked-content sequence CGPDFOperatorTableSetCallback (table, "BDC", &op_BDC);//Begin marked-content
0 2023-05-22
编程技术问答社区
如果一个形成路径的元素被包围,则该元素无效
我正在构建一个由细胞组成的2D网格游戏,玩家必须放置令牌并尝试包含(包围)对手的令牌.现在每个单元格可以具有3个状态:空,包含红色令牌或包含蓝色令牌. 所有可以形成"路径"的细胞都在列表中,沿着该路径我可以绘制经过细胞中心的线(多边形). 还有一个包含令牌的列表,一个被包围的令牌, 现在,我想找到一种"无效"包围令牌的方法,以便通过路径计算忽略它 请参阅下面的示例: 蓝色令牌首先被包围,它们不能与任何进一步的路径计算. 这不能允许.首先包含,首先要赢. 以下所有代码均来自路径类: class Path extends Stack{ private Token[][] grid; //a path shorter than min can not surround any cell private static final int MIN_PATH_LEGTH = 3; //a collectio
0 2023-05-21
编程技术问答社区
统一的2D路线
我正在寻找一种将像Navmesh代理这样的机制包括在2D方案中的方法.在Szenario中,2D对象在平坦的弹簧表面上移动.在某些情况下,他们需要彼此触及,这是通过找到算法的路径最能实现的.由于我找不到在线解决方案(NavMesh似乎仅适用于3D对象),因此我感谢您的开始. 作为另一个问题:在+100对象上应用这些探索算法会在移动设备上引起严重的性能问题吗?如果是这样 - 还有其他选择吗?现在,我只是删除对撞机,如果计时器通过,两个目标没有彼此到达.然而,这导致了沉重的视觉混乱,表面上有很多元素. 问候, Codehai 解决方案 我很确定您可以使用该 的内置3D系统 只需访问资产店即可立即找到" 2D pathfinding"的解决方案 正如Ehsan所提到的,Google用于许多解决方案,例如 其他解决方案 正如评论所建议的那样,*探路项目可能是一个有效的选择. 但是,我最终使用了 https://github.com/h8man/nav
66 2023-05-21
编程技术问答社区
二维数组中的寻路
假设我有这个2D阵列地图 { 0,0,0,0,7,1,1,1,1,1,1,1,1 }, { 0,7,7,7,7,1,1,1,24,1,1,1,1 }, { 0,7,24,24,24,24,24,24,24,1,1,3,1 }, { 0,7,23,23,23,23,23,23,24,1,1,3,1 }, { 0,7,24,23,23,23,23,23,23,1,1,1,1 }, { 0,7,24,23,23,23,23,23,23,1,1,1,1 }, { 0,7,23,23,23,23,23,23,24,1,3,1,1 }, { 0,7,24,24,24,24,24,24,24,1,3,1,1 }, { 0,0,0,0,1,1,1,1,1,1,1,1,1 }, 我的标签装满了定义阻塞瓷砖的整数.当我单击地图的一部分时,从我的玩家站着做一个良好的路线上的一部分时,将是一种好方法? A*(使用节点/等)?您建议什么? 谢谢. 解决方案 如果图形的大小实际上是您所描述的
8 2023-05-21
编程技术问答社区
能够浏览随机生成的2D城市的人工智能
我正在编写一个iOS游戏(使用Uiview),该游戏具有随机生成的2D城市. 我需要攻击A.I.,这将采取一条智能的途径来找到玩家(不与建筑物相撞). 有人可以将我指向我要使用哪种算法的正确方向? 编辑:我决定使用*.我将在地图上创建一个网格,测试每个网格相交点,如果该点在建筑物内部,我将使点无效.攻击AI.然后,播放器将从其当前位置移动到有效的网格点,该点更接近其目标(在其位置的某个半径内). 解决方案 您正在寻找一种称为这里的经典算法是 a* search ,它可以指导一个对象从一个位置沿最佳路径到另一个位置.这些算法是通过将2D世界建模为如果您需要的话,可以在线获得. 如果您有许多不同的对象需要移动到目标而又不干扰目标,则可能需要研究潜在的字段,这为使多个对象方法方法用于目标提供了一个简单而灵活的框架. "星际争霸AI ,通常用于机器人运动计划.直观地,这种方法是通过为每个位置分配"潜在"值,然后使对象从高电位变为低电位直到击中目标.这种方法的正确正确有点棘手,
4 2023-05-21
编程技术问答社区
二维航点寻路:通过WP的组合,从CurLocation到目标Location。
请花点时间了解我的情况.如果不可理解,请在评论中告诉我. 我有一个阵列列表.这些航路点没有任何顺序.路点具有以下属性: {int type, float z, float y, float x, float rotation} 这适用于一个3维世界,但是由于我的探路不应该关心身高(因此将世界视为2维世界),因此忽略了Y值.旋转对这个问题并不重要. 在这个两个维度世界中,x表示x轴,z表示y轴. 如果x增加,世界上的对象向东移动.如果x减少,世界上的对象向西移动. 如果z增加,世界上的物体向北移动.如果z减少,世界上的物体向南移动. 因此,这些"新"航向可以简化为:waypoint = {float x, float y}. 现在,这些航点表示对象的x轴(x)和y轴(z)位置.此外,还有一个当前位置:curLocation = {float x, float y}和一个目标位置:tarLocation = {float x, float y}. 这
0 2023-05-21
编程技术问答社区
二维阵列中的寻路算法
我想知道如何从通过所有具有相同值回到起始单元的单元格的单元格中找到路径. 由 value 在这里,我的意思是Token.CERCLE_ROUGE or Token.CERCLE_BLEU 考虑cell(4,5) == Token.CERCLE_BLEU,并且有邻居:3,4 - 4,4 - 5,4 - 3,5 - 5,5 - 3,6 - 4,6 - 5,6所有== Token.CERCLE_ROUGE 现在我们有cell(3,4)作为起点:如何找到通过(4,4), (5,4), (3,5), (5,5), (3,6), (4,6), (5,6)然后返回(3,4)的路径.在这里,我们可以绘制一个线段从细胞到单元,以便cell(4,5)将位于中心. (请参阅下图) 这里的想法是"捕获"对手的令牌,这就是玩家获得点的方式. 如果需要,我将更新任何信息. 更新: 我发现了一个我认为可以解决这个问题的探索实用程序,但我不知道如何实施它: https://gist.
2 2023-05-21
编程技术问答社区
在二维瓦片图中生成随机路径的算法
我需要在2D图块图中生成一个简单的随机路径.输入参数是许多步骤.条件是每个瓷砖在路径上只有两个相邻的瓷砖,因此没有房间,也没有十字路口. 我在网上寻找一些解决方案,但我没有找到这样的东西.醉酒算法可建造房间,而其他所有内容都是迷宫的一代算法.也许我不是通过适当的关键字搜索. 重要的是随机性,因为我每次都需要完全不同的路径. 编辑:添加示例图像 样本路径: 主要特征是每个瓷砖只有2个邻居. 改进的版本将使用特定的目标图作为路径的末端,最小和最大步骤,但现在并不重要. 谢谢您的任何想法. 解决方案 创建2D地图 因此,创建地图大小的2D数组,然后通过0 将其清除 添加N随机障碍 例如,地图中的填充圆圈 使用a*找到最短路径 您可以使用我的... c ++ a*示例 如果您想要更复杂的东西,则可以创建随机地形并使用*找到最短路径(而上升将花费更多,然后下降……).要创建随机地形,您可以使用: 钻石
2 2023-05-21
编程技术问答社区
Java-通过二维数组的路径上的最大和
基本上我有一个与此相似的问题: 有一个由2D阵列代表的草莓植物花园.每种植物(每个元素)都有许多草莓.您从数组的左上角开始,只能向右移动.我需要设计一种递归方法来计算通过花园的路径,然后输出哪些产量最多的草莓. 我认为我对非常简单的递归问题有一个了解,但是这个问题已经超越了我的头脑.我不确定从哪里开始或从哪里开始创建递归方法. 非常感谢与代码相关的任何帮助或帮助我了解此问题背后的概念.谢谢. 解决方案 就像Dasblinkenlight所说的那样,最有效的方法是使用回忆或动态编程技术.我倾向于更喜欢动态编程,但是我在这里使用纯递归. 答案围绕一个基本问题的答案中心:"如果我在ROW R和C列中的广场上,我该如何评估从左上到这里的路径,从而使草莓数量的数量最大化吗?" 关键要意识到,只有两种方法可以在第r行和C列中进入该图:要么我可以从上方到达那里,使用R-1和C列中的图,或者我可以到达那里从侧面使用R和C列C-1中的图.之后,您只需要确保您知道自己的
0 2023-05-21
编程技术问答社区
在Java中实现eval()解析器和2D数组
我真的陷入了两个与Java相关的问题上.一个简单,更困难. 关于创建2D阵列,我初始化了这样的表: private String [][] table_of_classifiers = null; 然后,在功能中,我填充了它的内容: String [][] table_of_classifiers = { {"x1","x","x","x","x"}, {"x2","x","x","x","x"}, {"x3","x","x","x","x"}, {"x4","x","x","x","x"}, {"x5","x","x","x","x"}, {"x6","x","x","x","x"}, }; ,但是您可以猜到第二个表覆盖(本地)是第一个,这当然不是我想做的.我做错了什么?请注意,表的尺寸
0 2023-05-20
编程技术问答社区
如何使视差滚动与停止在pygame的相机正常工作
说我们有一款游戏中的游戏,在此游戏中,我们有"滚动"对象,这些对象基本上将相机滚动在其中,停在边缘.当玩家留下卷轴并进入新卷轴时,相机将从一个滚动移动到另一个滚动.在这种情况下,要达到视差效应,我们需要将相机滚动的数量除以一个值.但是,如果我们独自这样做,当我们进入新的"滚动"时,背景似乎会因第一个"滚动"中的滚动程度不正确的数量而变化,那么如何解决此问题. ?这是我的相机代码和滚动代码 import pygame from pygame.locals import * class scroll_handler(list): def __init__(self): self.primary_scroll = None self.append(scroll_obj((50+1)*16,(2)*16,65*16,30*16)) self.append(scroll_obj((51+65)*16,(2)*16,65*16,30*1
10 2023-05-19
编程技术问答社区
Java2D在移动图像后删除旧像素?
因此,我在Java2d中移动图像,并且它弹跳起来.由于某种原因,它总是留下旧图像的踪迹.我该如何解决? 主类: package org.main.graphics; import java.awt.Graphics; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.swing.JFrame; import org.main.entity.Entity; import org.main.entity.Loael; @SuppressWarnings("serial") public class GameWindow extends JFrame implements Runnable { private List entities = new ArrayList(); p
2 2023-05-16
编程技术问答社区
在安卓系统上用透明油漆画画
当我在Android的普通2D画布上使用Paint Paint时,我没有得到任何结果,我的意图是摆脱画布上的某些内容.我的意思是我想处置的内容不会消失. 这是我的Paint的代码: mPointFillPaint = new Paint(); mPointFillPaint.setColor(Color.TRANSPARENT); mPointFillPaint.setAntiAlias(true); mPointFillPaint.setStyle(Paint.Style.FILL); mPointFillPaint.setStrokeJoin(Paint.Join.MITER); 解决方案 以下Paint配置应有所帮助: mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(Color.TRANSPARENT); mPaint.setXfermode(new PorterDuffXfermode
0 2023-05-16
编程技术问答社区