27. juni 2003 - 23:50Der er
5 kommentarer og 1 løsning
opbygning af database
jeg har en tabel på 10x10 felter hvor hvert felt kan have 1 ud af 3 forskellige værdier. Hvordan ville du opbygge den post i en database?
I databasen skal der kunne ligge flere tabeller. Det er til et sænke slagskibe spil, hvor en spiller skal kunne udfordre en anden. Posten skal derfor indeholde spillerens id nummer, modstanderens id nummer, og spillerens spilleplade med de 100 felter. Der skal også være en lignende post for modstanderen.
hmmm, jeg skal vel også have en post, med hvilke felter spilleren har angrebet.
Problemet er at jeg ikke ønsker følgende: spillerid, modstanderid, felt1, felt2, ... felt100 Det bliver umiddelbart for besværligt og tidskrævende at lave opslag i tabellen, da jeg så skal lave 4 opslag for hver gang en spiller angriber et felt.
Foreslag til hvordan jeg kan sende oplysningerne fra side til side uden at bruge en MySQL database, er også velkomne, men da spillerne skal kunne afbryde deres spil og gemme det til en anden dag, skal spillepladerne kunne gemmes.
Nu spiller jeg godt nok ikke "sænke slagskibe" ret tit (for ikke at sige aldrig), men jeg kan ikke lige gennemskue hvorfor det lige er bliver 4 opslag per skud?
Jeg får det til 4 databasetilgange pr. skud. Måske kan det gøres smartere:
1. et opslag for at hente spillernes plader (henter 4 poster) 2. en update af spillerens angrebsfelter (så spilleren kan se hvilke felter han har angrebet. Indholdet af modstanderens plade skal vises i de felter spilleren har angrebet) 3. evt. en update af modstanderens plade med ramt felt (hvis spilleren ramte noget, skal det destrueres fra modstanderens plade) 4. Hente spillernes plader for at vise dem på siden (skal ske hos begge spillere)
Så er det næste spillers tur og det hele starter forfra
Jeg ved ikke helt om jeg kan følge dit opslag nr. 2 og/eller 3.
Nu er min viden om mysql godt nok begrænset, men jeg kender ikke til andet end nogle ret basale datatyper så idéen om én post bestående af bl.a. et 2D-array er vist ikke muligt. Uanset om det er skal der jo hentes lige meget data hvad enten dataen ligger i én post eller den ligger hvert felt for sig, så mit bud på en løsning er den (synes jeg) mest oplagte:
CREATE TABLE felt( spillderid char(25), modstanderid char(25), x tinyint unsigned, y tinyint unsigned, value enum('vand', 'vand-ramt', 'skib', 'skib_ramt') );
...så en spiller har 100 poster per spilleplade.
Jeg håber ikke det var det du mente med "spillerid, modstanderid, felt1, felt2, ... felt100", da jeg tolker det som:
Da jeg gerne vil undgå 100 poster pr. spillerplade og gerne vil undgå 100 felter pr. pladepost, foretrækker jeg arnes løsning. Jeg nåede selv frem til samme løsning i nat, nemlig at gemme pladen i en streng på 100 tegn. Så skal jeg kun hente en post med 5 felter db_id int(5) (index autonummerering) spiller_id int(5) modstander_id int(5) pladetype tinyint(1) (plade eller angreb) plade varchar(100)
Dog havde jeg ikke set det geniale i at gemme angreb og plade i samme post v/V/s/S. Mange tak for det tip.
Hmm, den med strengen var slet ikke faldet mig ind. Smart! :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.