[Java] Waarde meerdere malen gebruiken

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • cagXZ
  • Registratie: September 2013
  • Laatst online: 16-02 13:24
Beste tweakers! bedankt voor jullie aandacht!
Ik zit met een dilemma... Ik heb een game gemaakt waarin het gebruik maken van een switch case, je keuze uitvoert door 1, te attacken en 2, een health potion te drinken.

Nadat een adversary geen hp meer over heeft, krijgt de user 2 keuzes in de vorm van een methode
Java:
1
2
 
importChoice();
wat weer ervoor zorgt dat de user gelijk kan kiezen of hij/zij wilt doorgaan met vechten of 2, System.out.exit(0)

De probleem waar ik nu tegen aanloop is wanneer de speler er voor kiest om verder te vechten, dan komt er geen nieuwe enemy(uit een array genaamd
Java:
1
static String[] vijanden  = {"midget", "goblin", "fish with legs", "hobbit"}; 
en wat door
Java:
1
static String Vijand = vijanden[randomizer.nextInt(vijanden.length)];
een random enemy aangeroepen wordt.

Dit valt maar één keer te gebruiken en het is juist de bedoeling nadat de speler 1 invoert, er een geheel nieuw enemy met HP tevoorschijn hoort te komen.

Nu heb ik geprobeerd om nieuwe methode hier voor te maken maar dat zit mij ontzettend tegen en ik zit nu zonder ideeën :(

Wat zouden jullie hier doen?

...

Relevante software en hardware die ik gebruik

IntelliJ IDEA
...


Met vriendelijke groet C.C.

Ps: ik realiseer mij net dat de titel nogal misleidend is vergeleken met de inhoud...

[ Voor 3% gewijzigd door cagXZ op 09-02-2018 14:18 ]

Beste antwoord (via cagXZ op 09-02-2018 15:23)


  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 12-06 22:13

Afvalzak

Zet jij mij even buiten?

Dan zou ik hier beginnen:
https://docs.oracle.com/j.../java/javaOO/classes.html Waarom is hij uberhaupt static?

Last.fm | Code Talks

Alle reacties


Acties:
  • +1 Henk 'm!

Anoniem: 420461

Ik zou op de plek waar je in de logica een nieuwe vijand nodig hebt de code die die definieert (opnieuw) aanroepen.

Zou het trouwens niet beter zijn eerst wat online cursusjes en zo te doen voordat je dit soort uitdagingen aangaat? Ik denk het wel, namelijk.

Acties:
  • 0 Henk 'm!

  • cagXZ
  • Registratie: September 2013
  • Laatst online: 16-02 13:24
Hahaaa, ja nogal. Ik heb een boek wat heet Late Objects Big Java van Cay Horstmann waar ik zo nu en dan wat inspiratie vandaan haal!

En juist zulk soort projecten helpen het meest met leren

Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 12:59

Reptile209

- gers -

Je kan via report/handje bovenaan de pagina een nieuwe titel voorstellen die de lading beter dekt.

Wat je vraag betreft: ik snap er geen hout van. Wat doe je nu precies, wat komt daar uit en hoe is dat anders dan dat je had verwacht?
Veel games zijn in de kern een grote loop:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
InitializeGame ()

Loop
  InitializeOpponent ()
  Fight ()
  If (playerWins)
    Quit = AnotheroneOrQuit ()
  Else
    ...
  Endif
While not (quit)

End


Helpt dat?

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • cagXZ
  • Registratie: September 2013
  • Laatst online: 16-02 13:24
Reptile209 schreef op vrijdag 9 februari 2018 @ 14:37:
Je kan via report/handje bovenaan de pagina een nieuwe titel voorstellen die de lading beter dekt.

Wat je vraag betreft: ik snap er geen hout van. Wat doe je nu precies, wat komt daar uit en hoe is dat anders dan dat je had verwacht?
Veel games zijn in de kern een grote loop:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
InitializeGame ()

Loop
  InitializeOpponent ()
  Fight ()
  If (playerWins)
    Quit = AnotheroneOrQuit ()
  Else
    ...
  Endif
While not (quit)

End


Helpt dat?
Bedankt dat je dat even snel toelicht!

Ik zal het proberen te verduidelijken,
De tl;dr variant, de speler maakt gebruik van alleen 2 switch statements, 1 attack, 2 heal, nadat de enemy verslagen is, roep ik een methode aan wat er voor zorgt dat je twee andere keuzes krijgt "continue" of "quit" wat resulteert in een System.out.exit(0);

Het probleem zit hem juist in het verslaan van de vijand om vervolgens verder te gaan. De enemy gaat gewoon verder met zijn oude waardes en oude naam. terwijl er een heel nieuwe enemy met HP hoort te verschijnen :/

ik kan daarom de random gegenereerde waardes niet in een loop zetten want anders zou je constant nieuwe waardes met nieuwe HP krijgen wat niet de bedoeling is.

De core van mijn game zit ook in een loop, zover begrijp ik het ook. alleen lukt het mij niet om een nieuwe enemy tevoorschijn te halen :(

Acties:
  • +1 Henk 'm!

Anoniem: 420461

cagXZ schreef op vrijdag 9 februari 2018 @ 14:34:
En juist zulk soort projecten helpen het meest met leren
Echt niet om lullig te doen, maar ik betwijfel dit. Je hebt de code om een vijand te maken, je weet wanneer je een vijand nodig hebt, en het lukt je niet om die twee gegevens te combineren. Da's het equivalent van een schroevendraaier hebben, last hebben van een losse schroef, maar niet bedenken dat je die twee kunt combineren.

Dan heb je in de basis nog wat ervaring nodig van een soort die je imho eerder opdoet door tutorials te volgen waarin uitgelegd wordt wat en vooral waarom gedaan wordt.

Maar goed - lees mijn eerdere reactie nog eens door over een stukje code (opnieuw) aanroepen. Dat is het antwoord op je vraag, namelijk.

Acties:
  • +1 Henk 'm!

  • geforce5_guy
  • Registratie: December 2001
  • Niet online
cagXZ schreef op vrijdag 9 februari 2018 @ 14:45:
[...]


Bedankt dat je dat even snel toelicht!

Ik zal het proberen te verduidelijken,
De tl;dr variant, de speler maakt gebruik van alleen 2 switch statements, 1 attack, 2 heal, nadat de enemy verslagen is, roep ik een methode aan wat er voor zorgt dat je twee andere keuzes krijgt "continue" of "quit" wat resulteert in een System.out.exit(0);

Het probleem zit hem juist in het verslaan van de vijand om vervolgens verder te gaan. De enemy gaat gewoon verder met zijn oude waardes en oude naam. terwijl er een heel nieuwe enemy met HP hoort te verschijnen :/

ik kan daarom de random gegenereerde waardes niet in een loop zetten want anders zou je constant nieuwe waardes met nieuwe HP krijgen wat niet de bedoeling is.

De core van mijn game zit ook in een loop, zover begrijp ik het ook. alleen lukt het mij niet om een nieuwe enemy tevoorschijn te halen :(
Begin: Je vijand = een object van vijand type 1
Na verslagen kies je optie voor nieuw dan: geen nieuw object maar nog steeds de verslagen vijand.

Ik gok dat er dus iets fout gaat bij het creëren van de nieuwe vijand.

Acties:
  • +1 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 12-06 22:13

Afvalzak

Zet jij mij even buiten?

Als je je realiseert dat:
static String Vijand = vijanden[randomizer.nextInt(vijanden.length)];

1 keer gedaan wordt bij het aanmaken van je class dan ga je snappen wat er fout gaat :)

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

  • cagXZ
  • Registratie: September 2013
  • Laatst online: 16-02 13:24
Anoniem: 420461 schreef op vrijdag 9 februari 2018 @ 14:47:
[...]

Echt niet om lullig te doen, maar ik betwijfel dit. Je hebt de code om een vijand te maken, je weet wanneer je een vijand nodig hebt, en het lukt je niet om die twee gegevens te combineren. Da's het equivalent van een schroevendraaier hebben, last hebben van een losse schroef, maar niet bedenken dat je die twee kunt combineren.

Dan heb je in de basis nog wat ervaring nodig van een soort die je imho eerder opdoet door tutorials te volgen waarin uitgelegd wordt wat en vooral waarom gedaan wordt.

Maar goed - lees mijn eerdere reactie nog eens door over een stukje code (opnieuw) aanroepen. Dat is het antwoord op je vraag, namelijk.
Na ontzettend lang knoeien leer je vanzelf welke beweging je moet maken :v. Ik kan je gerust stellen dat ik zeker gebruik maak van tutorials maar ik moet nog een tutorial zien te vinden wat er voor zorgt dat alles gecombineerd wordt
Afvalzak schreef op vrijdag 9 februari 2018 @ 14:53:


Als je je realiseert dat:
static String Vijand = vijanden[randomizer.nextInt(vijanden.length)];

1 keer gedaan wordt bij het aanmaken van je class dan ga je snappen wat er fout gaat :)
precies dat dus!

Ik heb alleen geen flauw idee hoe ik dat in een niet "static" eigenschap zou kunnen toepassen

[ Voor 7% gewijzigd door cagXZ op 09-02-2018 15:00 ]


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 12-06 22:13

Afvalzak

Zet jij mij even buiten?

Dan zou ik hier beginnen:
https://docs.oracle.com/j.../java/javaOO/classes.html Waarom is hij uberhaupt static?

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

  • cagXZ
  • Registratie: September 2013
  • Laatst online: 16-02 13:24
Dat is heel moeilijk uit te leggen zonder de code eerst gezien te hebben... Ik heb alsware alle data static gemaakt om toegang te geven tot alle methodes wie het nodig zouden hebben.

Acties:
  • +1 Henk 'm!

  • cagXZ
  • Registratie: September 2013
  • Laatst online: 16-02 13:24
Met wat nader onderzoek ben ik tot conclusie gekomen dat OOP hier het beste toe te passen is, bedankt voor je hint. Anders was ik er niet achtergekomen.

Acties:
  • +1 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
cagXZ schreef op vrijdag 9 februari 2018 @ 15:07:
[...]


Dat is heel moeilijk uit te leggen zonder de code eerst gezien te hebben... Ik heb alsware alle data static gemaakt om toegang te geven tot alle methodes wie het nodig zouden hebben.
Dit soort opmerkingen is zo ongeveer waarom je tuts moet lezen en je gewoon in de basis moet inlezen.

Static heeft niets te maken met toegang tot methodes.

In wezen ben ik het wel met je eens dat je het meeste leert door het simpelweg te doen, echter is er wel een zekere minimum basis vereist anders leer je alleen maar de compleet verkeerde dingen omdat je de basis niet snapt en je simpelweg uitgaat van : "It compiles, ship it"

Acties:
  • 0 Henk 'm!

  • laugh
  • Registratie: December 2011
  • Niet online
Gomez12 schreef op vrijdag 9 februari 2018 @ 19:24:
[...]

Dit soort opmerkingen is zo ongeveer waarom je tuts moet lezen en je gewoon in de basis moet inlezen.

In wezen ben ik het wel met je eens dat je het meeste leert door het simpelweg te doen, echter is er wel een zekere minimum basis vereist anders leer je alleen maar de compleet verkeerde dingen omdat je de basis niet snapt en je simpelweg uitgaat van : "It compiles, ship it"
Ben het hier mee eens. Dit is voornamelijk een algoritme probleem. Onze OP probeert wat in elkaar te knutselen maar heeft zelf eigenlijk nog niet een goed idee van een pseudocode, dat levert vaak niet veel op. Ik denk eerlijk gezegd ook niet dat het zin heeft om te rennen als we nog niet eens kunnen staan.
Pagina: 1