C#-ban szeretnék egy programot elkészíteni, de elakadtam egy ponton valaki ötlet?
A beolvasási résznél van egy dolog amit logikailag nem tudok megoldani, és ehhez szeretnék segítséget kérni. A program lényege annyi, hogy az elején megkérdezi a harcos nevét, és ha az adott név már volt, akkor a képességét ami a jegyzettömbe van ( Neve KI ereje, ütőereje, sebessége)
mellé kellene rendelnie. A logikai lépést ott nem értem, hogy addig eljutok, hogy felismeri hogy egy adott név már van a jegyzettömben, de azt szeretném elérni, hogyha a név már Volt, akkor a névhez tartozó értékeket rendelje hozzá. Tehát pl kérdezi a program, hogy harcos neve?
és válaszolod, hogy Pista, de a jegyzettömben van egy Pista nevű "harcos" akkor a mentett értékeket használja fel! Minden program végén elmenti a programom autómatikusan egyébként a nevet, az energiát, az erőt és a sebességet. De nem tudom logikailag hogy fejezzem ki, ha pl felülről a jegyzettömben a 8. név volt a Pista, akkor az energiák közül is felülről a 8.-at válassza ki.
Előre is köszönöm! Nagyon fontos lenne! :)
Console.WriteLine("Hogy hívnak első harcos?");
string b = Console.ReadLine();
string[] beolvasas = System.IO.File.ReadAllLines("karakterek.txt");
string[] neve = new string [beolvasas.Length]; //a legvégén lévő jegyzetben mentett adtokat akarom beolvastatni...
double[] energia = new double[beolvasas.Length];
int[] utoenergia = new int[beolvasas.Length];
int[] gyorsasag = new int[beolvasas.Length];
for (int i = 1; i < beolvasas.Length; i++)
{
string be = beolvasas[i];
string[] split = be.Split(' ', ' ', ' ');
neve[i] = (split[0]);
energia[i] = Convert.ToInt32(split[1]);
utoenergia[i] = Convert.ToInt32(split[2]);
gyorsasag[i] = Convert.ToInt32(split[3]);
}
for (int i = 0; i < neve.Length; i++)
{
if (neve[i]==b)
{
}
}
Ha jól értelmezem a dolgot, akkor ilyen formátumban mented az adataidat
név, stat1, stat2, stat3 <sortörés>
név, stat1, stat2, stat3 <sortörés>
Amikor a második for ban végigmész a neveken, akkor az i pont azt adja vissza, hogy hányadik sorban vagy, szóval elég egyszerű a dolog.
if (neve[i] == b){
energiaja = energia[i];
gyorsasaga = gyorsasag[i];
Viszont az ilyen változóneveket, hogy "b" felejtsd el, agybajt kapsz tőle, elég hamar, és baromira nehéz leszokni róla, jobb minél előbb elkezdeni.
konkrétan ez van a jegyzettömbe most:
Ádám 22 8 1
Ádám 525 44 4
Ádám 162 35 4
Ez a probléma már a mentéshez tartozik, az egyik megoldás, hogy nem csak hozzáírsz a meglévő fájlhoz(ha jól sejtem így csinálod), hanem betöltöd az egészet, felülírod amit kell, és az egész fájlt kiírod.
Az ilyen jellegű feladatokra egyébként a struct sokkal alkalmasabb, úgy rendszerezed ahogy akarod, és nem kell konvertálással szarakodni sem.
Csak nagyon kezdő vagyok... Egyébként így bővítettem a programot most, de mégsem írja ki amit kell, egyedül a nevet. Figyi:
double energiaforciklus = 0;
int utoenergiaforciklus=0;
int gyorsasagforciklus = 0;
for (int i = 0; i < neve.Length; i++)
{
if (neve[i]==b)
{
energia[i] = energiaforciklus;
utoenergia[i] = utoenergiaforciklus;
gyorsasag[i] = gyorsasagforciklus;
}
}
Console.WriteLine(b, energiaforciklus, utoenergiaforciklus, gyorsasagforciklus);
A komplett program is is eleve nagyon káosz... :D
Áruld már el kérlek, hogy miért csinálsz egyre és egyre bonyolultabb programokat, amikor a legalapabb fogalmakkal sem vagy tisztában?
Ennek annyi lesz az eredménye, hogy néhány hét múlva akkora káosz lesz a fejedben, hogy egy életre elmegy a kedved az egésztől.
Erről beszélek, hogy meglepődsz, hogy ez a kód 0-t ír ki...
Keress már valami más hobbit...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!