Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

21

20.01.2011, 16:53

Ich kenne das nur in C++, vllt. geht das auch in C# ;)
Deine Funktion sollte Integer sein:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public int zahlen(int geld)
{
if (erpresstworden == false)
{
Random zufall = new Random();
int zufallsbetrag = zufall.Next(0, 20);
geld = geld + festbetrag + zufallsbetrag;

}
else
{
Console.WriteLine("Dieser Laden ist schon erpresst worden!");
}return geld; //<-WICHTIG!!!
}


In der Spiel-Klasse rufst du das dann so auf:

C-/C++-Quelltext

1
int money = 0; :HIER WILL KEINE LEERZEILE REIN -.-: int newmoney = Laden.zahlen(money);

22

20.01.2011, 17:06

wie zurück? Meinst du den Wert? Der ist fest sobald du "=" aufrufst.

Am anfang hab ich "Geld". Dann kommt halt der Festwert + eine Zufallszahl dazu. Jetzt hab ich Geld + Festzahl + Zufallszahl. Das muss wieder in die Klasse zurück, aus der ich "Geld" geholt habe

Ich kenne das nur in C++, vllt. geht das auch in C# ;)
...
...
...


Das geht leider nicht so....

23

20.01.2011, 17:08

Nunja, aber so ähnlich wird das schon gehen denke ich... ^^

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

24

20.01.2011, 17:51

Wie bekomme ich jetzt die Variabele "geld" wieder zurück in meine Klasse "spiel", aus der ich "laden" aufgerufen hab? Ich stehe da gerade irgendwie auf dem Schlauch. Das liegt aber wohl daran, dass ich in dem halbem Jahr kaum mit Klassen gearbeitet hab (was eigentlich total schwachsinnig war :D)

genau deshalb sind bücher KEINE zeitverschwendung. wenn man möglichst gut programmieren will kommt man an fachlektüre nicht vorbei. selbst wenn es nicht nur um die basics geht. 10 jahre erfahrung bringen nichts wenn man etwas immer wieder ineffizient implementiert weil man es nicht besser weiß.

das mit dem return war schon richtig. der aufruf sieht dann in etwa so aus:

C-/C++-Quelltext

1
geld = geschaefft.zahlen(geld);

kannst es auch mit einer referenz umsetzen(was aber, zumindest in c++, schlechter stil ist)

C-/C++-Quelltext

1
public void zahlen(ref int geld)

erklärung
das lernt man normalerweise im dritten kapitel eines einsteigerbuchs. nach einem halben jahr erfahrung sieht das jedenfalls nicht aus. leg dir ein oder zwei ordentliche bücher zu wenn du dich nicht ewig mit kleinigkeiten aufhalten willst. oder lies dir wenigstens ein openbook zu C# durch. zum beispiel das. versuch dir anzugewöhnen englische bezeichner zu nutzen.

edit: wenn ich schon von stil spreche sollte ich dir auch die beste methode verraten...
wenn du ein geschäfft erpressen würdest, würdest du dann immer dein ganzes geld mit nehmen, das eingenomme geld dort mit deinem vorhandenen geld zusammen packen und dann zählen? nein, du würdest das geld aus dem geschäfft holen und bei dir im hauptquartiert zählen. deshalb sollte die methode nur das eingenommene geld zurück geben.(wenn nichts eingenommen wurde einfach 0)
der aufruf sieht dann in etwa so aus

C-/C++-Quelltext

1
geld += geschaefft.erpressen();
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (20.01.2011, 18:02)


Darkrel

Treue Seele

Beiträge: 143

Wohnort: Zürich

Beruf: Student ETH Zürich

  • Private Nachricht senden

25

21.01.2011, 01:21

Was bei solchen grundlegenden Fragen immer hilft, ist ein Nachschlagewerk für die entsprechende Programmiersprache.
Wenn du mühe hast mit Klassen, dann empfehle ich dir zumindest einmal ein Buch durchzulesen. Ich weiss, ein Buch zu lesen zu einer Programmiersprache
ist u.U. sehr trocken und langweilig. Du kannst das gelernte aber brauchen und wirst merken, dass du immer mehr verstehst.

Galileo Openbooks sind immer eine gute Anlaufstelle. Der Link führt dich erstmal zu der Übersicht.
http://www.galileocomputing.de/katalog/openbook


Das entsprechende Buch zu C# findest du hier.
http://openbook.galileocomputing.de/visual_csharp/


Wenn du das ganze etwas beherrschst, kannst du dich durch diverse XNA Tutorials wühlen und dich damit mal beschäftigen.
Mach das aber erst, wenn du die elementaren Züge der Sprache verstehst. Ansonsten gebe ich einem meiner Vorredner recht.
Wenn du merkst, dass dir das Buch zu langweilig wird, mach die Seite zu und bastle an deinem Spiel weiter. Je weiter du das Buch liest,
desto mehr wirst du einbauen. Und desto mehr lust wirst du bekommen immer wieder neues auszuprobieren. ;)

Viel Spass damit! Bleib am Ball, es lohnt sich ;)
:cursing:

botlin

Treue Seele

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

26

21.01.2011, 09:23

Ich vermute mal das er den Wert geld in der Funktion hinter her wieder haben will.
Einfachste Möglichkeit ist es ein "ref" vor dein int Argument in der Funktion zu setzen.
du must dann aber auch ein ref vor das Argument beim Funktions aufruf setzen.
Damit bearbeitest du die Variable dann direkt. in deinem Fall legst du ja nur ne Kopie an.

Beispiel:

Quellcode

1
2
3
4
5
6
7
8
9
10
public void Addition(ref int Value)
{
    Value+=10;
}

//Aufruf
int Wert=23;
Addition(Wert);

Console.WriteLine(Wert.ToString()); //Wert sollte jetzt 33 sein

27

21.01.2011, 15:39


Zitat von »cin0s«

das mit dem return war schon richtig. der aufruf sieht dann in etwa so aus:


C-/C++-Quelltext

1
geld = geschaefft.zahlen(geld);

Danke das mir hier einer zustimmt, hab schon an meinem Verstand gezweifelt, als cin0s gestern geschrieben hat, dass das nicht möglich wäre ;)

28

21.01.2011, 19:23

Ja geht jetzt :D
Hab das nur schnell getestet und deshalb einen Fehler gemacht:
Ich hatte "public void int zahlen(int geld)" :D Da hab ich wohl zu schnell geantwortet. Sorry...

Ich hab mir jetzt übrigens das Buch hier:
http://openbook.galileocomputing.de/visual_csharp/
bestellt. Sollte in den nächsten Tagen ankommen...

Darkrel

Treue Seele

Beiträge: 143

Wohnort: Zürich

Beruf: Student ETH Zürich

  • Private Nachricht senden

29

21.01.2011, 19:44

Kleiner Tipp:

Ich hatte das genannte Buch vor allem deshalb gepostet, weil es dich absolut nichts kostet ;)
Wenn du schon ein C# Buch bestellst, dann hätte ich eher die aktuelle Version davon bestellt:

http://www.galileocomputing.de/katalog/b…4279A4.Ww7ZXcmY


Liebe Grüsse,
Dalhai
:cursing:

30

22.01.2011, 11:39

Aber schlimm ist es denke ich nicht, an der Programmiersprache selbst ändert sich ja nichts. ;)
EDIT: Außerdem leben wir ja im Zeitalter des Internets :lol:

Werbeanzeige