我需要获取具有一个bool true的2D数组的元素。 这是唯一一个拥有此布尔值的人。如何获得具有特定值的数组的元素
public void getCurrentTile()
{
for (int x = 0; x < 75; x++)
{
for (int y = 0; y < 75; y++)
{
if (((Tile)grid[y, x]).lit)
{
current = (Tile)grid[y, x];
}
}
}
}
这是我现在的代码。它似乎无法正常工作。它只在一个瓦片点亮时返回当前值。当另一个瓦片点亮时,它不会返回瓦片。
典瓷砖:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace SimMedieval
{
public class Tile
{
public int size;
public String path;
public Texture2D texture;
public bool lit = false;
public bool lightable;
MouseState mouseState;
public System.Drawing.Color color;
public int posX;
public int posY;
public Tile(int s, String texturepath, bool light)
{
size = s;
path = texturepath;
lightable = light;
}
public void load(Game game, Game1 game1, System.Drawing.Color colour)
{
color = colour;
texture = game.Content.Load<Texture2D>(path);
game1.tiles.Add(this);
}
public void render(SpriteBatch sprites,int x, int y, Camera cam, Tile[,] grid)
{
mouseState = Mouse.GetState();
float camPosX = (x * size) + cam.posX;
float camPosY = (y * size) + cam.posY;
if (-20 < camPosX && camPosX < 960 && -20 < camPosY && camPosY < 640)
{
if (new Microsoft.Xna.Framework.Rectangle(x, y, 1, 1).Contains((mouseState.X/size) - ((int)Math.Round(cam.posX)/size), (mouseState.Y/size) - ((int)Math.Round(cam.posY)/size)))
{
lit = true;
grid[y, x] = this;
sprites.Draw(texture, new Vector2((x * size) + cam.posX, (y * size) + cam.posY), Microsoft.Xna.Framework.Color.Coral);
}
else
{
lit = false;
grid[y, x] = this;
sprites.Draw(texture, new Vector2((x * size) + cam.posX, (y * size) + cam.posY), Microsoft.Xna.Framework.Color.White);
}
}
}
public void spawn(int x, int y, Tile[,] grid)
{
grid[y, x] = this;
posX = x;
posY = y;
}
}
}
我不明白。一方面你说'这是唯一一个具有这个布尔值的',但是你会说'当另一个瓦片点亮时'。那么可以有多个瓷砖吗? – 2013-05-01 08:47:31
是的,当你选择一个新的电流或者类似的东西时,你可能会忘记关闭一个磁贴。或者也许真的没有点亮的瓷砖。检查这两个答案更好的方法(总结一下 - 实际上你应该返回找到的tile,如果没有发现,则返回null,并处理来自调用者的结果,而不是从函数内分配) – SimpleVar 2013-05-01 08:50:45
让我来解释一下。总是有一块瓦片点亮。从来没有一个。但是我的代码只是在瓦片时返回一个瓦片,让我们说,#20点亮。但是,当#13号灯亮起,#20号灯没有返回时。 – Hobbit9797 2013-05-01 09:07:01