Matdorspil - Grafisk programmering

Tags:    java

<< < 123 > >>
Hej

Så er jeg gået i stå med mit Java igen.

Jeg havde tidligere lavet et matadorspil (med hjælp fra bogen), og nu består opgaven så i at lave det grafisk.

Jeg har fået alle felterne til at blive vist grafisk, men jeg vil gerne have at der står under feltet hvem der ejer det. Jeg synes jeg har prøvet alt, men kan ikke få det til at virke.

I klassen Grund2, har jeg sat nogle udskrivninger ind, for at se hvad der sker. Det viser at metoden bliver kørt igennem, men den ikke vil tegne ejeren til grunden.

Håber i kan hjælpe.

Programmet er delt op i mange klasser, og jeg poster de mest relevante for at spillet kan fungere. Dog i rækkefølge efter relevans. Jeg er næsten sikker på at problemet ligger i MatadorGrafikpanel, Felt og Grund2.



Grafikpanelet:
Fold kodeboks ind/udKode 


Felt:
Fold kodeboks ind/udKode 


Grund2:
Fold kodeboks ind/udKode 


Gade2:
Fold kodeboks ind/udKode 


Spiller:
Fold kodeboks ind/udKode 


Matadorspil:
Fold kodeboks ind/udKode 


BenytMatadorspil:
Fold kodeboks ind/udKode 




23 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Hvis du bare gerne vil have det til at virke burde du kunne gøre følgende. Her referer jeg til den kode du postede fra starten af:

Du skal kun have et Matatadorspil nemlig den du laver i BenytMatadorspil. Dvs. der ændres kun i en under alle omstændigheder. Men dit grafikpanel kender ikke noget til den. Derfor kan du give den med i "constructoren".

Ændrer Grafikpanelet til:
Fold kodeboks ind/udKode 


Så når du laver dette grafikpanel skal du huske at give den Matadorspillet når du laver panelet:

Fold kodeboks ind/udKode 


Prøv lige og teste om det så ikke virker.




Hej Kristian,

Med kun den kode som du har vist der, bliver pladen ikke vist når jeg kører det. Istedet vises kun et tomt Jpanel.

Jeg har været nødt til at udkommentere nogle ikke virkende felter i BenytMatadorspil klassen.

Det tyder på at der er noget galt i måden tingene tegnes og opdateres på. Men har ikke kunnet gå i dybden med det konkrete problem endnu.

Jeg har leget midt med koden for at få den tiol at tegne noget, jeg tror virkelig at du skal se på din programstruktur - den er ikke super veldesignet, selvom den stadig er ok :) Jeg har set værre.

MEN!!!
Du skal ikke have 2 JPanel's. Henret klassen MatadorGrafikpanel - den funktionalitet skal ligge i Matadorspil.java.

Samtidig skal du KUN lave den instans af Matadorspil.java, som laves i starten af BenytMatadorspil - så ligger grund ejerne der, og de gemmes og vises faktisk (da jeg først fik den fiflet til at vise grafikken).

Held og lykke med det :)

Med venlig hilsen
Ieet






Indlæg senest redigeret d. 22.01.2010 11:03 af Bruger #12836
Jeg har kun kigget på de 3 klasser du nævner. I grafikpanelet tegner du alle felter. Felter tegner deres eget navn. Informationen om ejeren ligger i Grund2. Den tegner du aldrig.



Jeg har kun kigget på de 3 klasser du nævner. I grafikpanelet tegner du alle felter. Felter tegner deres eget navn. Informationen om ejeren ligger i Grund2. Den tegner du aldrig.


Grund2 forlænger (extends) jo Felt, så det bliver vel overført?

Eller er jeg helt forkert på den?



Ups havde jeg ikke lige set extends der. :$



Har debugget og problemet ligger i at "ejer" ikke bliver gemt ordentlig af en eller anden årsag. Ejer variablen virker fint i metoden "landet" men underligt nok er den altid null i tegn.

Det er nok en trådningsproblem. Du har main metoden som sætter ejer i main tråden. Og så er der GUI tråden som bruger den til at tegne. De har nok hver deres version af variablen. At sætte ejer til volatile gjorde det dog ikke for mig.



Indlæg senest redigeret d. 17.01.2010 16:13 af Bruger #14645
Ja kan jeg godt se nu. Ejer er altid null, da min
if(ejer != null) metode aldrig bliver kørt.

Kan det have noget at gøre med at ejer er en lokal variabel i metoden "landet"?

Og hvordan kan man så lave det?



Ja kan jeg godt se nu. Ejer er altid null, da min
if(ejer != null) metode aldrig bliver kørt.

Kan det have noget at gøre med at ejer er en lokal variabel i metoden "landet"?

Og hvordan kan man så lave det?

Ejer er lokal til instansen af klassen, ikke til metoden.



Ja men den bliver da først initialiseret i metoden?



Indlæg senest redigeret d. 17.01.2010 18:58 af Bruger #15575
Ja men den bliver da først initialiseret i metoden?

Ja men den kan "ses" i hele klassen ikke kun i metoden. Du initialiserer den i metoden, men du deklarerer den i klassen. Hvis du lavede en ny variabel, "String ejer;" inde i metoden ville den være "lokal til metoden" og overskygge klassens "ejer". Men det har du ikke så det burde ikke være noget problem.

Er 100% sikker på at problemet er noget med at Swing GUI tråden og main tråden ikke ser den samme.



Indlæg senest redigeret d. 17.01.2010 19:02 af Bruger #14645
<< < 123 > >>
t