Kezdőoldal » Számítástechnika » Programozás » C#-ban szeretnék egy programot...

C#-ban szeretnék egy programot elkészíteni, de elakadtam egy ponton valaki ötlet?

Figyelt kérdés

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)

{


}

}



2015. jún. 8. 17:19
1 2 3 4
 21/37 SimkoL ***** válasza:
#20: Linkeld már be a Prog.hu-n a profilodat, hogy ekkora arc vagy.
2015. jún. 8. 20:29
Hasznos számodra ez a válasz?
 22/37 anonim ***** válasza:

???

Miért lenne a prog.hu-n profilom és ki mondta, hogy akkora arc vagyok?

2015. jún. 8. 20:38
Hasznos számodra ez a válasz?
 23/37 SimkoL ***** válasza:
Már sokadszor mínősíted le a kérdezőket úgy mint ha te zseni lennél vagy legalább is értenél a programozáshoz. Azért gondoltam, hogy jegyeznek a Prog.hu-n is válaszadóként.
2015. jún. 8. 20:50
Hasznos számodra ez a válasz?
 24/37 A kérdező kommentje:

Íme...



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;


namespace ConsoleApplication2

{


class Program

{


static void Main(string[] args)

{


Console.SetWindowSize(100, 35);


Console.ForegroundColor = ConsoleColor.Red;


Random r = new Random();



ugraspont:



Console.WriteLine("Üdvözöllek titeket a dragon ball erőmérő programunkban, most megmérjük a KI-det");

ugraspontketto:

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]);



}



double energiaforciklus = 0;

int utoenergiaforciklus = 0;

int gyorsasagforciklus = 0;



for (int i = 0; i < neve.Length; i++)

{

if (neve[i]==b)

{

energiaforciklus = energia[i];

utoenergiaforciklus = utoenergia[i];

gyorsasagforciklus = gyorsasag[i];


}

}



if (b == "hack")

{

Console.WriteLine("Ha beírod, hogy Raimhol, akkor legyőzhetetlen leszel szinte");

Console.WriteLine("Ezen kívül játszhat anime karakterekkel, ha pl beírod hogy Nappa");

goto ugraspontketto;

}



double c;

double d;

double j;

double k;

string w;

string e;

int sebesseg;



int[] tomb = new int[1];

for (int a = 0; a < 1; ++a)

{

tomb[a] = r.Next(1000000);

}



for (int a = 0; a < 1; ++a)

{

if (b == "Nappa" || b == "nappa")

{

Console.WriteLine("Nappa félelmetes tekintettel néz és hatalmas erő áramlik testéből");

}


else if (tomb[a] > 10000 && tomb[a] < 1000000)

{

tomb[a] = r.Next(1, 120);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] > 3000 && tomb[a] < 10000)

{

tomb[a] = r.Next(125, 600);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);


}


else if (tomb[a] > 1000 && tomb[a] < 3000)

{

tomb[a] = r.Next(600, 2000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] > 100 && tomb[a] < 1000)

{

tomb[a] = r.Next(2000, 17000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}


else if (tomb[a] > 20 && tomb[a] < 100)

{

tomb[a] = r.Next(17000, 55000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] < 20 && tomb[a] < 5)

{

tomb[a] = r.Next(100000, 10000000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] < 5)

{

tomb[a] = r.Next(10000000, 2000000000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}



}


if (b == "nappa" || b == "Nappa")

{

Console.WriteLine("Nappa erőszintje 4000 továbbra is");

}

else

{

Console.WriteLine("{0} a te erőszinted jelenleg {1} ideje edzeni menni, hogy még erősebbé válj!", b, tomb[0]);

}


c = tomb[0];



Console.WriteLine(" ");

Console.WriteLine("Most megmérjük a te KI-det is...");

Console.WriteLine("Hogy hívnak második harcos?");


string m = Console.ReadLine();



for (int a = 0; a < 1; ++a)

{

tomb[a] = r.Next(1000000);

}

for (int a = 0; a < 1; ++a)

{

if (m == "Nappa" || m == "nappa")

{

Console.WriteLine("Nappa félelmetes tekintettel néz és hatalmas erő áramlik testéből");

}

else if (tomb[a] > 10000 && tomb[a] < 1000000)

{

tomb[a] = r.Next(1, 120);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] > 3000 && tomb[a] < 10000)

{

tomb[a] = r.Next(125, 600);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);


}


else if (tomb[a] > 1000 && tomb[a] < 3000)

{

tomb[a] = r.Next(600, 2000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] > 100 && tomb[a] < 1000)

{

tomb[a] = r.Next(2000, 17000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] > 20 && tomb[a] < 100)

{

tomb[a] = r.Next(17000, 55000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] < 20 && tomb[a] < 5)

{

tomb[a] = r.Next(100000, 10000000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}

else if (tomb[a] < 5)

{

tomb[a] = r.Next(10000000, 2000000000);

Console.WriteLine(" ");

Console.WriteLine("A te harcierőd: " + tomb[a]);

}


}

if (m == "Nappa" || m == "nappa")

{

Console.WriteLine("Nappa KI ereje 4000 egység");

}

else

{

Console.WriteLine("{0} a te erőszinted jelenleg {1} ideje edzeni menni, hogy még erősebbé válj!!!", m, tomb[0]);

}


d = tomb[0];

k = d / c;

j = c / d;

if (b == "nappa" || b == "nappa" || m == "nappa" || m == "Nappa" || b == "raimhol" || b == "Raimhol" || m == "raimhol" || m == "Raimhol")

{

Console.WriteLine("Hatalmas energiák vannak jelen, és lehetetlen megállapítani melyikük az erősebb");

}


else if (c > d)

{

Console.WriteLine("{0} erősebb mint {1} körülbelül ennyiszer: {2}", b, m, j);

}

else

{

Console.WriteLine("{0} erősebb mint {1} körülbelül ennyiszer: {2} ", m, b, k);

}


Console.WriteLine(" ");

Console.WriteLine("Hamarosan kezdetét veszi a harc, ahol mindkét fél minden rejtett erejét felhasználja...");

w = Console.ReadLine();


Random harc = new Random();

int[] general = new int[1];

general[0] = harc.Next(1, 8);

if (b == "nappa" || b == "Nappa")

{

Console.WriteLine("Nappa ereje felment körülbelül " + 4000 * general[0] + " egységre");

}


else

{

Console.WriteLine("{0} harci KI ereje felment pontosan " + general[0] * c + " egységre", b);

}


double zz = general[0] * c;


general[0] = harc.Next(1, 8);

if (m == "nappa" || m == "Nappa")

{

Console.WriteLine("Nappa ereje felment körülbelül " + 4000 * general[0] + " egységre");

}

else

{

Console.WriteLine("{0} harci KI ereje felment pontosan " + general[0] * d + " egységre", m);

}


double zzz = general[0] * d;

Console.WriteLine(" ");



Random ero = new Random();

int utoero = 0;

utoero = ero.Next(1, 45);

Console.WriteLine("{0} Ütőereje: {1} egység!", b, utoero);

int utoeroketto = utoero;

sebesseg = ero.Next(1, 5);


Console.WriteLine("{0} sebessége: {1} egység!", b, sebesseg);

int sebessegegy = sebesseg;

Console.WriteLine(" ");

Console.WriteLine(" ");


utoero = 0;

utoero = ero.Next(1, 45);

Console.WriteLine("{0} Ütőereje: {1} egység!", m, utoero);

int utoeroharom = utoero;



sebesseg = 0;

sebesseg = ero.Next(1, 5);

Console.WriteLine("{0} sebessége: {1} egység!", m, sebesseg);

int sebessegketto = sebesseg;



double vegeredmeny = 0;

double vegeredmenyketto = 0;

vegeredmeny = (utoeroketto + zz / 10) * sebessegegy + (zz / 70);

vegeredmenyketto = (utoeroharom + zzz / 10) * sebessegketto + (zzz / 70);


Console.ReadLine();

Console.WriteLine("Véres harc folyik a két fél között, és a harc lassan véget ér...");


if (b == "raimhol" || b == "Raimhol" || m == "raimhol" || m == "Raimhol")

{

Console.WriteLine("raimhol bolondot csinált belőled, és felfedi igazi hatalmát, amitől megrémül a világ");

vegeredmeny = (100 + 500000) * sebessegegy + (zz / 70);

Console.WriteLine(" ");

e = Console.ReadLine();

}

if (b == "Nappa" || b == "nappa" || m == "Nappa" || m == "nappa")

{

vegeredmeny = (40 + 4000 / 10) * 4 + (zz / 70);

}


if (vegeredmeny > vegeredmenyketto)

{

Console.WriteLine("{0} sorozni kezdi ellenfelét, és feladásra kényszeríti {1}-t", b, m);

}

if (vegeredmeny < vegeredmenyketto)

{

Console.WriteLine("{0} sorozni kezdi ellenfelét, és feladásra kényszeríti {1}-t", m, b);

}


Console.WriteLine("A teljes energiamennyiség {0} testében {1} egység, {2} testében pedig {3} egység", b, vegeredmeny, m, vegeredmenyketto);

Console.WriteLine(" ");

e = Console.ReadLine();


Console.WriteLine(" ");

Console.WriteLine("Gratulálok a győztesnek");

Console.WriteLine(" ");

Console.WriteLine("a programot Készítette: Kovács Dániel, Cad-Cam informatikus tanuló (Raimhol)");

Console.WriteLine(" ");

Console.WriteLine(" ");

Console.WriteLine("További jó játékot, várlak vissza legközelebb is! :)");

Console.WriteLine("ha új játékot szeretne indítani írja be, hogy ujjatek");

e = Console.ReadLine();

Console.WriteLine(" ");

if (e == "ujjatek")

{

Console.Clear();


goto ugraspont;


}

FileStream fs = new FileStream("karaktere

2015. jún. 8. 21:50
 25/37 A kérdező kommentje:
Itt tart egyébként a forráskódom, de igazatok volt... olyan szinten szörnyen bonyolultra csináltam, hogy nem tudom elérni, hogy a legelején ha a karakter neve már szerepelt egyszer (magyarul a txt-ben van a neve mellérendelt adatokkal is) akkor a sikeresen változókba rakott értékeket, amiket txt-ből szedek ki, azokat számolásnál, és kiírásnál kiírja....
2015. jún. 8. 21:50
 26/37 anonim ***** válasza:
Bontsd több részre a kódodat, mert így formázva is átláthatatlan lenne. Txt helyett használj sql-t, C# -ban emlékeim szerint nem bonyolult.
2015. jún. 8. 23:21
Hasznos számodra ez a válasz?
 27/37 anonim ***** válasza:

Egyetértek az előzővel, bontsd szét a programodat, és ha már úgyis úgy döntöttél hogy az első nyelved OOP legyen, akkor használd is ki.


Csinálj külön osztályt pl. a Játékosnak aminek lehetnek életerő stb tulajdonságai és különféle támadás metódusai. Ha összetartozó adatokat és eljárásokat látsz, jó eséllyel egy osztályba kerülnek.


A kiírást és a grafikus elemeket tedd inkább egy külön metódusba és ne írd le kétszer vagy többször ugyan azt a kódot. Ha duplikálnod kell egy kódot, az nagyon szépen jelzi hogy metódust kell neki csinálni, és csak meg kell hívni amikor szükség van rá.


A játékosok tárolását old meg valamiféle tárolóval. Listák, halmazok, szótárak. Azt vettem észre hogy nem ismered ezeket a tároló elemeket és a kódod nincs jól szervezve, ezért a fájlba írást használod tárolóelemként ami elég furcsa gondolat, még nem nagyon találkoztam olyannak aki ilyet művelt volna.


Ha nem csak ideiglenesen akarsz tárolni és azt akarod hogy megmaradjanak az adataid akkor ahogy föntebb írták, érdemes vagy adatbázist használni vagy ami sokkal egyszerűbb, szerializálni az adatokat. Egy paranccsal kiírhatsz a lemezre egy adatstruktúrát, és azt bármikor vissza is olvashatod egy-két parancs segítségével.


Ezen felül úgy látom a kezdők manapság imádják a goto használatát.. Nem tudom honnan tanuljátok de nem győzöm eléggé hangsúlyozni hogy el kell minél előbb felejteni mert nagyon rossz programozási szokás. Minden meg lehet oldani ciklussal, függvényekkel és feltételes elágazásokkal, ráadásul sokkal egyszerűbben, átláthatóbban.


És ha kódot akarsz megosztani akkor azt kódmegosztóval tedd, így szerintem senki nem fogja neked átnézni. Pastebin, gist, stb..

2015. jún. 9. 00:07
Hasznos számodra ez a válasz?
 28/37 A kérdező kommentje:
Köszi a tippet! Az objektumorientált részével az a bajom, hogy nem teljesen értem... Hogy a classok, konstruktorok, hogyan működnek pontosan. Olvasgattam róla, de nem igazán értem, hogyan kellene használni a konstruktorokat. mi az a void, miért pont static void, miért kell a return, stb.. ezekről fogalmam sincs, és a baj, hogy minden könyv amit találok neten olyan szakzsargonnal írja le a dolgokat, hogy kódfejtő könyv kell hozzá, hogy megértse az ember... Kb úgy írják le a dolgokat, hogy csak az érti, aki már 10 éve tudja! :D
2015. jún. 9. 00:34
 29/37 anonim ***** válasza:

Hazugság.

Én is linkeltem egy könyvet, ami tök kezdőknek is elmagyarázza, csak:

1. El kéne olvasni

2. Meg kéne érteni (gondolkozni rajta 1 másodpercnél tovább)

3. Nem úgy belevágni, hogy "nem tudom mi az a return, az szakzsargon, inkább írok egy játékot".

A konstruktorra is kaptál egy csomó anyagot, 10en magyarázták 3 oldalon keresztül, meg sem próbáltad megérteni.

Utána meg arrogánsan idehánysz egy ilyen kódot, hogy egy szuper összetett játék, pedig még csak kezdő vagy...

Valami elképesztő szar hozzáállás.

2015. jún. 9. 07:50
Hasznos számodra ez a válasz?
 30/37 anonim válasza:

Szerintem az OOP azért problémás, mert ahhoz nem árt egy kicsit előre gondolkozni, és ez kezdőknél nem szokás, pláne ha közben tanulja meg a dolgokat, a másik pedig hogy még egy könyvben sem láttam aránylag egyszerű példákat amik bemutatnák az OOP előnyét, és a kezdő programozó a fejéhez kapna hogy b+ így tényleg sokkal jobb lenne csinálni.

Aki meg ért hozzá az meg sokszor olyan arrogáns mint itt egy-két hozzászóló aki elfelejti hogy ő is volt kezdő valamikor, talán féltik a munkájukat? Szerintem inkább dicséretes hogy valaki a szabadidejében ezzel foglalkozik.

2015. jún. 9. 10:48
Hasznos számodra ez a válasz?
1 2 3 4

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!