2020-02-23, 16:32
  #13
Medlem
Adgos avatar
Citat:
Ursprungligen postat av Trollfeeder
Ha loopen längre ut. Jag tycker inte den hör hemma i den här metoden alls, men den är rätt rörig och stor så jag har svårt att säga vad som hör och inte hör hemma.

Och sen bör villkoret vara and, inte or som det är nu, annars fortsätter fighten tills båda har dött och det tror jag inte du hade tänkte.

Använder du något ramverk eller gör du allt från scratch?

Hur menar du när du säger att jag ska ha loopen längre ut?

Gör allt från scratch samtidigt som jag läser om OOP, kollar hur andra har gjort etc
Citera
2020-02-23, 16:37
  #14
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av Adgo
Hur menar du när du säger att jag ska ha loopen längre ut?

Gör allt från scratch samtidigt som jag läser om OOP, kollar hur andra har gjort etc

Alltså, att den här metoden som kollar vad spelaren ska göra borde anropas från en loop där man också uppdaterar grafik-output. Nu har du loopen för långt in så du spelar klart hela spelet och sen ritar du ut vad som hände.
Citera
2020-02-23, 16:40
  #15
Medlem
Adgos avatar
Citat:
Ursprungligen postat av Trollfeeder
Alltså, att den här metoden som kollar vad spelaren ska göra borde anropas från en loop där man också uppdaterar grafik-output. Nu har du loopen för långt in så du spelar klart hela spelet och sen ritar du ut vad som hände.

Jaha så repaint ska inkluderas i loopen? Ska prova detta.

Tack du har varit till stor hjälp

Återkommer om det uppstår något nytt fel med loopen.
__________________
Senast redigerad av Adgo 2020-02-23 kl. 16:42.
Citera
2020-02-23, 16:58
  #16
Medlem
Adgos avatar
Citat:
Ursprungligen postat av Trollfeeder
Ha loopen längre ut. Jag tycker inte den hör hemma i den här metoden alls, men den är rätt rörig och stor så jag har svårt att säga vad som hör och inte hör hemma.

Hur skulle du göra istället för att få karaktärerna att slåss btw?
Finns det ett bättre sätt?
Citera
2020-02-23, 17:40
  #17
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av Adgo
Hur skulle du göra istället för att få karaktärerna att slåss btw?
Finns det ett bättre sätt?

Om man tittar på hur spelramverk funkar så brukar det vara så att du har en metod som ramverket anropar på ett prestandaberoende intervall som du gör det grafiska i, och en metod som kör på ett fast intervall som du kör fysiken i, typ spelarens riktning, studsar, vad det nu må vara. Då ligger loopen i ramverket.

Sådant som hitboxars storlekar och liknade vill du nog sätta upp i en init-metod som bara körs en gång. Det är onödigt att göra varje iteration.

Edit: Blandade ihop, det är fysiken man brukar köra på fast intervall såklart.
__________________
Senast redigerad av Trollfeeder 2020-02-23 kl. 17:58.
Citera
2020-02-24, 17:01
  #18
Medlem
kjellbrels avatar
Citat:
Ursprungligen postat av Adgo
Jaha så repaint ska inkluderas i loopen? Ska prova detta.
Efter det du beskrivit tidigare så känns det som du gett dig på något som du inte är redo för än.

Swing är enkeltrådat och event dispatch thread får inte lastas ned med för mycket jobb. Den skall endast bestå av GUI-relaterade uppdateringar. Just nu låser du hela den tråden tills dess din metod avslutar, så att anropa repaint ett flertal gånger har precis noll effekt, då du inte ger någon annan del i systemet chansen att agera på den flaggningen.

Innan du känner dig åtminstone någorlunda redo för att skriva flertrådade program kommer detta bli jobbigt för dig. Kort beskrivet för att lösa detta bra, så bör du dela upp din kod i 2 trådar. En maintråd där all din logik sker och som enbart notifierar/postar uppdateringar på eventtråden, där du då pluggar in dina listeners som gör enbart GUI-uppdateringar.
Citera
2020-02-24, 20:25
  #19
Medlem
Adgos avatar
Citat:
Ursprungligen postat av Trollfeeder
Om man tittar på hur spelramverk funkar så brukar det vara så att du har en metod som ramverket anropar på ett prestandaberoende intervall som du gör det grafiska i, och en metod som kör på ett fast intervall som du kör fysiken i, typ spelarens riktning, studsar, vad det nu må vara. Då ligger loopen i ramverket.

Sådant som hitboxars storlekar och liknade vill du nog sätta upp i en init-metod som bara körs en gång. Det är onödigt att göra varje iteration.

Edit: Blandade ihop, det är fysiken man brukar köra på fast intervall såklart.

Jag förstår. Känner du till något exempel eller någon sida där jag kan kolla och se hur något sådant kan se ut?

Jag känner att det mesta i mitt spel är okej strukturerat för att vara mitt första spel men skulle gärna vilja läsa mer/se exempel på hur andra gör för framtida projekt.
Citera
2020-02-24, 20:29
  #20
Medlem
Adgos avatar
Citat:
Ursprungligen postat av kjellbrel
Efter det du beskrivit tidigare så känns det som du gett dig på något som du inte är redo för än.

Swing är enkeltrådat och event dispatch thread får inte lastas ned med för mycket jobb. Den skall endast bestå av GUI-relaterade uppdateringar. Just nu låser du hela den tråden tills dess din metod avslutar, så att anropa repaint ett flertal gånger har precis noll effekt, då du inte ger någon annan del i systemet chansen att agera på den flaggningen.

Innan du känner dig åtminstone någorlunda redo för att skriva flertrådade program kommer detta bli jobbigt för dig. Kort beskrivet för att lösa detta bra, så bör du dela upp din kod i 2 trådar. En maintråd där all din logik sker och som enbart notifierar/postar uppdateringar på eventtråden, där du då pluggar in dina listeners som gör enbart GUI-uppdateringar.

Till en början hade jag en separat class(tråd), i samma fil som koden jag visade, som bestod av keylistener. Man kunde spela två spelare och slå och sparka varandra. Det är nu i efterhand som jag vela ersätta den med någon sorts automation. Keylistener fanns det mycket att läsa om. Det var ganska enkelt att implementera men att ersätta den har varit svårt och det är det jag behöver hjälp med
Citera
2020-02-24, 21:35
  #21
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av kjellbrel
Efter det du beskrivit tidigare så känns det som du gett dig på något som du inte är redo för än.

Swing är enkeltrådat och event dispatch thread får inte lastas ned med för mycket jobb. Den skall endast bestå av GUI-relaterade uppdateringar. Just nu låser du hela den tråden tills dess din metod avslutar, så att anropa repaint ett flertal gånger har precis noll effekt, då du inte ger någon annan del i systemet chansen att agera på den flaggningen.

Innan du känner dig åtminstone någorlunda redo för att skriva flertrådade program kommer detta bli jobbigt för dig. Kort beskrivet för att lösa detta bra, så bör du dela upp din kod i 2 trådar. En maintråd där all din logik sker och som enbart notifierar/postar uppdateringar på eventtråden, där du då pluggar in dina listeners som gör enbart GUI-uppdateringar.

Om TS vill börja enkelt kan han skita i flertrådat, men då måste han se till att det inte blir jättemånga cykler mellan varje repaint. Men mest då för att få se något röra sig. Man gör inga seriösa spel på det sättet. Ska man göra något annat än ett jättesimpelt spel så måste man såklart ha mer än en tråd.

Citat:
Ursprungligen postat av Adgo
Jag förstår. Känner du till något exempel eller någon sida där jag kan kolla och se hur något sådant kan se ut?

Jag känner att det mesta i mitt spel är okej strukturerat för att vara mitt första spel men skulle gärna vilja läsa mer/se exempel på hur andra gör för framtida projekt.

Är det ett självändamål att det ska vara just Swing? Eller ens Java? Vad är du ute efter? Lära dig göra spel eller lära dig Java?

Citat:
Ursprungligen postat av Adgo
Till en början hade jag en separat class(tråd), i samma fil som koden jag visade, som bestod av keylistener. Man kunde spela två spelare och slå och sparka varandra. Det är nu i efterhand som jag vela ersätta den med någon sorts automation. Keylistener fanns det mycket att läsa om. Det var ganska enkelt att implementera men att ersätta den har varit svårt och det är det jag behöver hjälp med

En klass är inte en tråd.
Citera
2020-02-24, 22:36
  #22
Medlem
kjellbrels avatar
Citat:
Ursprungligen postat av Trollfeeder
Om TS vill börja enkelt kan han skita i flertrådat, men då måste han se till att det inte blir jättemånga cykler mellan varje repaint. Men mest då för att få se något röra sig. Man gör inga seriösa spel på det sättet. Ska man göra något annat än ett jättesimpelt spel så måste man såklart ha mer än en tråd.
Ja självklart går det att få saker att "fungera" med diverse fullösningar och brister. Jag tolkade dock att TS mål i första hand var att lära sig saker och om det stämmer så är detta definitivt ingen bra väg framåt.

Citat:
Ursprungligen postat av Adgo
Till en början hade jag en separat class(tråd), i samma fil som koden jag visade, som bestod av keylistener. Man kunde spela två spelare och slå och sparka varandra. Det är nu i efterhand som jag vela ersätta den med någon sorts automation. Keylistener fanns det mycket att läsa om. Det var ganska enkelt att implementera men att ersätta den har varit svårt och det är det jag behöver hjälp med
Alltså, de missförstånd du visar (runt ex trådning) här gör att jag verkligen tycker att du skall vänta med Swing ett tag till. Du är inte redo för det helt enkelt. Precis som Trollfeeder också frågar så tycker jag du skall fundera på vad du vill uppnå först och främst. Om det är att lära dig Java så ta en sak i taget. Blanda inte in Swing i detta just nu.

Om du exempelvis skulle vara nöjd med att få din spellogik att fungera så skulle du kunna hålla ned detta till en enkel command line-applikation som simulerar fighten och läser dina inputs (snytingarna) från System.in och skriver ut vad som händer på System.out. Sannolikt tråkigare än du tänkt dig detta, men antagligen något som du kommer ta dig framåt bättre med. Allt blir enkeltrådat här varvid du slipper fundera på det i nuläget.

På längre sikt när du lärt dig mer så kanske du är redo att göra om den här koden till en logikmotor att köra i egen tråd. I det läget har du en bra grund att bygga en Swing-app ovanpå och få en prydlig lösning där enbart UI-updates körs på eventtråden medans all din spellogik rullar i sin egna separata tråd.
Citera
2020-02-24, 22:48
  #23
Medlem
Adgos avatar
Citat:
Ursprungligen postat av Trollfeeder
Är det ett självändamål att det ska vara just Swing? Eller ens Java? Vad är du ute efter? Lära dig göra spel eller lära dig Java?

Det ska vara Java. Jag hade gjort ett liknande spel fast textbaserad i terminalen förut. Vela prova med spritegrafik och kom in på swing

Citat:
Ursprungligen postat av Trollfeeder

En klass är inte en tråd.

Alltså jag använde mig a klassen Thread
Citera
2020-02-24, 22:52
  #24
Medlem
Adgos avatar
Citat:
Ursprungligen postat av kjellbrel
Ja självklart går det att få saker att "fungera" med diverse fullösningar och brister. Jag tolkade dock att TS mål i första hand var att lära sig saker och om det stämmer så är detta definitivt ingen bra väg framåt.


Alltså, de missförstånd du visar (runt ex trådning) här gör att jag verkligen tycker att du skall vänta med Swing ett tag till. Du är inte redo för det helt enkelt. Precis som Trollfeeder också frågar så tycker jag du skall fundera på vad du vill uppnå först och främst. Om det är att lära dig Java så ta en sak i taget. Blanda inte in Swing i detta just nu.

Om du exempelvis skulle vara nöjd med att få din spellogik att fungera så skulle du kunna hålla ned detta till en enkel command line-applikation som simulerar fighten och läser dina inputs (snytingarna) från System.in och skriver ut vad som händer på System.out. Sannolikt tråkigare än du tänkt dig detta, men antagligen något som du kommer ta dig framåt bättre med. Allt blir enkeltrådat här varvid du slipper fundera på det i nuläget.

På längre sikt när du lärt dig mer så kanske du är redo att göra om den här koden till en logikmotor att köra i egen tråd. I det läget har du en bra grund att bygga en Swing-app ovanpå och få en prydlig lösning där enbart UI-updates körs på eventtråden medans all din spellogik rullar i sin egna separata tråd.

Jag har redan gjort samma spel men textbaserad som spelas i terminalen. Tänkte lära mig mer genom att göra samma spel fast med spritegrafik

Jag förstår att min kod inte är optimal men jag tänkte försöka få detta spel att fungera, lägga till kommentarer med förslag på bättre sätt att göra spelet på och sedan i framtiden göra spelet igen fast lägga till något nytt(typ att karaktärerna kan springa, hoppa, ducka) och göra det "rätt"
__________________
Senast redigerad av Adgo 2020-02-24 kl. 23:00.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in