Hey ici, c'est que j'essaie de changer la santé initiale à 0 une fois qu'ils sont touchés. Mais avec cela, il change un ennemi aléatoire dans le tableau 2D et les fait disparaître à la place de ceux qui sont touchés. J'ai commenté la plupart de mon code espère que cela aide :)
n'a pas pu trouver un poste avec la même question désolé s'il y a ... Toutes les autres suggestions seraient incroyables aussi! MerciMon Hit Détection dans mon tableau 2D est de sortir les gens au hasard à la place de ceux qu'il frappe
public partial class Form1 : Form
{
//score & ammo
int score = 0;
int ammo = 5;
//setting cannon
int tank = 0;
//mouse cords
int mouseX = 0;
int mouseY = 0;
//Small boom
int Sboomx = -20;
int Sboomy = -20;
//random positions for enemys to spawn
int MinX = 1020;
int MaxX = 7020;
int MinY = 350;
int MaxY = 400;
//speed of them
int SpeedMinX = -7;
int SpeedMaxX = -2;
//array
int[,] bads = new int[300, 5];
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//setting positions and loading in people
Random randNum = new Random();
for (int i = 0; i < 300; i++)
{
//where they go
bads[i,0] = randNum.Next(MinX, MaxX);
bads[i, 1] = randNum.Next(MinY, MaxY);
//health
bads[i, 2] = 1;
//how they move
//dx
bads[i, 3] = randNum.Next(SpeedMinX, SpeedMaxX);
//dy
bads[i, 4] = 1;
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
//background
e.Graphics.DrawImage(Properties.Resources.Background1, 0, 0, 1000, 500);
//Aim
e.Graphics.DrawImage(Properties.Resources.crosshair, mouseX - 10, mouseY - 10, 20, 20);
//explotion
e.Graphics.DrawImage(Properties.Resources.small, Sboomx - 285, Sboomy - 298, 600, 600);
//Tank cannon
if (tank == 1)
{
e.Graphics.DrawImage(Properties.Resources.Tank__5__copy, 140, 335, 60, 60);
}
else if (tank == 2)
{
e.Graphics.DrawImage(Properties.Resources.Tank__10__copy, 140, 335, 60, 60);
}
else if (tank == 3)
{
e.Graphics.DrawImage(Properties.Resources.Tank__15__copy, 140, 335, 60, 60);
}
else if (tank == 4)
{
e.Graphics.DrawImage(Properties.Resources.Tank_0__copy, 140, 335, 60, 60);
}
//draw Bad guys
for (int i = 0; i < 300; i++)
{
if (bads[i, 2] == 1)
{
e.Graphics.FillRectangle(Brushes.Black, bads[i, 0] , bads[i, 1], 10, 20);
}
}
//undrawthem
for (int i = 0; i < 300; i++)
{
if (bads[i, 2] == 0)
{
e.Graphics.FillRectangle(Brushes.Black, bads[i, 0], bads[i, 1], 0, 0);
Sboomx = -20;
Sboomy = -20;
}
}
}
//Timer
private void timer1_Tick(object sender, EventArgs e)
{
//Collision
for (int i = 0; i < 300; i++)
{
if (Sboomx == bads[i, 0] || Sboomy == bads[i,1])
{
bads[i, 2] = 0;
ammo++;
score = score + 5; ;
}
}
//Score
label2.Text = " " + score;
//Ammo
label1.Text = " " + ammo;
//Moving enemys
for (int i = 0; i < 300; i++)
{
bads[i, 0] = bads[i, 0] + bads[i, 3];
bads[i, 1] = bads[i, 1] + bads[i, 4];
if (bads[i, 0] > 2040 || bads[i, 0] < 140)
{
bads[i, 3] = bads[i, 3] * -1;
}
if (bads[i, 1] > 335 || bads[i, 1] < 350)
{
bads[i, 4] = bads[i, 4] * -1;
}
}
this.Refresh();
}
private void label1_Click(object sender, EventArgs e)
{
//Ammo
}
private void label2_Click(object sender, EventArgs e)
{
//Customers served
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
//Control tank cannon
mouseY = e.Y;
mouseX = e.X;
if (mouseY > 350 && mouseY < 375)
{
tank = 1;
}
else if (mouseY > 376 && mouseY < 390)
{
tank = 2;
}
else if (mouseY > 391)
{
tank = 3;
}
else if (mouseY <= 339)
{
tank = 4;
}
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
//creates explotion and takes away ammo
Sboomx = e.X;
Sboomy = e.Y;
ammo--;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
//moves explosion
Sboomx = -20;
Sboomy = -20;
}
}
}
Il y a trop de code ici pour que quelqu'un puisse vous aider. Essayez de travailler pour produire une reproduction minimale (en faisant cela, cela vous aidera probablement à résoudre votre problème) –
L'état de santé est mauvais [i, 2]. Lorsque vous déplacez les ennemis, vous ne déplacez pas l'objet 2 dans le tableau, donc il semble qu'un ennemi aléatoire disparaisse. – jdweng