www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheC#-Forum

Adler

Gepostet:
25.12.2004 00:27

Randomize ... und ne If Abfrage.  
Hi!

Ich habe da ein Problem, aber ich würde sagen, für ca. 3 Tage C# ist das Garnet übel! ;)
Habe folgenden Code, um eigtl. ein Planetenfeld zu generieren.
und irgendwie kommen sogar manchmal die gleichen Koordinaten wie nen anderer Planet, was ich aber mit der einen If-Abfrage klären wollte.
zu Randomize, wie bestimme ich, zwischen welchen werten Randomize auswählen darf?
Hier der Code:

<pre>
#region Using directives

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

#endregion

namespace WindowsApplication1
{
public class Randomize
{
double dRndNum;

public int GenNum()
{
Random objRandom = new Random();
dRndNum = objRandom.NextDouble();
return (int)(dRndNum * 10.0);
}
}

public class Planet
{
public int x, y, z;
public string name;
}

public class GalaxyData
{
Randomize randomize = new Randomize();
public ArrayList planets = new ArrayList();
int planetcount;

public GalaxyData()
{

}

/// <summary>
/// This public void creats a new Galaxy
///
/// <param name="pcount">This var is the count of planets in the system
/// <param name="pdistance">This var is the minimum distance of two planets
/// <param name="pgalaxysize">This var is the size of the galaxy
<pre>
public void CreatePlanets(int pcount, int pdistance, int pgalaxysize)
{
bool corectdistance;
Planet newplanet = new Planet();
planetcount = pcount;

for (int i = 0; i <= pcount; i++)
{
corectdistance = true;
newplanet.x = randomize.GenNum();
newplanet.y = randomize.GenNum();
newplanet.z = randomize.GenNum();

for (int m = 0; m < i; m++)
{
if ((newplanet.x - (planets[m] as Planet).x) *
(newplanet.x - (planets[m] as Planet).x) +
(newplanet.y - (planets[m] as Planet).y) *
(newplanet.y - (planets[m] as Planet).y) +
(newplanet.z - (planets[m] as Planet).z) *
(newplanet.z - (planets[m] as Planet).z) >
pdistance * pdistance)
{
if (corectdistance == true)
{
i = i - 1;
}
corectdistance = false;
}
}

if (corectdistance)
{
planets.Add(new Planet());
(planets as Planet).x = newplanet.x;
(planets[i] as Planet).y = newplanet.y;
(planets[i] as Planet).z = newplanet.z;
}
}

}
}
}





Gibts denn keine Codebox? :-/
Wenn ihr net durchblickt kann ichs verstehen ^^
Der nimmt keine mehrfachen leerzeichen hier an, sorry.
Zum Seitenanfang Homepage      
 
Jammni

Gepostet:
26.12.2004 13:34

   
Also, wenn du Quelltext eingeben willst, dann kannst du einfach <pre>-Tags um den Quelltext machen. Oder - für die ganz mühevollen - jedes Leerzeichen durch ersetzen.

So dann zu deinen Fragen:
Random.NextDouble()
liefert eine Zahl zwischen 0 und 1, 0 ist inklusive, 1 exklusive. Wenn du nun z.B. eine Zahl zwischen 0 und 100 haben möchtest (100 exklusive), dann multiplizierst du einfach diese Zahl mit 100.

Und zum zweiten Teil:
Ich kann leider nicht erkennen, wie du versuchst zwei gleich Planeten herauszufiltern. Meiner Meinung nach sollte das ja etwa so aussehen:
  if ((newplanet.x == (planets[m] as Planet).x) &&
(newplanet.y == (planets[m] as Planet).y) &&
(newplanet.z == (planets[m] as Planet).z))
{
// Planet ist schon vorhanden --> verwerfen
}
else
{
// Planet ins Array schreiben
}


Ich hoffe, das hilft dir nen bissel weiter.
Zum Seitenanfang Homepage   ICQ    
 
Adler

Gepostet:
26.12.2004 20:13

   
Also, die Randomize erklärung klingt plausibel ;)
Aber die IF Abfrage stimmt, nur das ich aus dem < ein > machen musste (oder umgekehrt?!)

Ich hatte dich im ICQ geadded, was los...
Wollte jediglich fragen, auf was ich achten muss bei Tutorials für C#.
Irgendwelches Highlighting oder sonstwas?

ThX.

PS: Habe es nun geschafft die Planeten zu generieren und via OpenGl punkte an deren Koordinaten anzeigen zu lassen.
Sowie das drehen aller Planeten (also die Ansicht)
Zum Seitenanfang Homepage      
 
Jammni

Gepostet:
27.12.2004 11:55

   
Wär echt nett, wenn du nen kleines tut zu OpenGL und C# schreiben würdest. Wär nämlich mal interessant zu wissen, wie OpenGL eingebunden wurde.
Jo, also icq hab ich einfach nicht angehabt über die feiertage...
ich füg dich also einfach mal hinzu. und dann können wir ja den rest bequatschen - so heute spät abend...
Zum Seitenanfang Homepage   ICQ