|
| Mysql - Hvordan ska recordset'et se ud ? Fra : Matthiessen |
Dato : 12-03-02 17:21 |
|
MySQL problem.....
Jeg er igang med at lave et online multiplayer spil i ASP. Man flyver rundt
på en større bane men man skal kun se 3*3 felter i nærheden, hvor man selv
er i den midterste. Det skal være i form af et kryds ( 0 ka ik ses, 1 ka
ses ) :
O1O
1 1 1
O1O
banen er 3 * 3 felter ind til videre, skal dog være ca 15*15 senere, så
RS'et ska være uaghængig af størrelsen. Jeg er på posx 2 og posy 2, så jeg
skal altså ha valgt de 5 felter, og ikke andet.
Min DB ser sådan ud :
posx = int
posy = int
posx | posx
1|1
1|2
1|3
2|1
2|2
2|3
3|1
3|2
3|3
Værdierne som jeg henter min position fra er playerposy og playerposx
Kan nogen finde ud af at lave en recordset der kan det ? - jeg er lige
begyndt på MySQL ( Access før det ), så det er ik liiige at finde ud af.
Håber jeg har forklaret problemet forståeligt ;)
Hilsen
Anders Matthiessen
web@dioder.dk
| |
Nis Jorgensen (12-03-2002)
| Kommentar Fra : Nis Jorgensen |
Dato : 12-03-02 17:51 |
|
On Tue, 12 Mar 2002 17:20:33 +0100, "Matthiessen"
<matthiessen@tdcadsl.dk> wrote:
>banen er 3 * 3 felter ind til videre, skal dog være ca 15*15 senere, så
>RS'et ska være uaghængig af størrelsen. Jeg er på posx 2 og posy 2, så jeg
>skal altså ha valgt de 5 felter, og ikke andet.
>
>Min DB ser sådan ud :
> posx = int
> posy = int
>
>posx | posx
> 1|1
> 1|2
> 1|3
> 2|1
> 2|2
> 2|3
> 3|1
> 3|2
> 3|3
>
>Værdierne som jeg henter min position fra er playerposy og playerposx
>
>
>
>Kan nogen finde ud af at lave en recordset der kan det ? - jeg er lige
>begyndt på MySQL ( Access før det ), så det er ik liiige at finde ud af.
>Håber jeg har forklaret problemet forståeligt ;)
Tjoo, det skulle vel nok kunne lade sig goere. Jeg gaar ud fra at du
har to variable playerx og playery, som du paa en eller anden maade
faar ind i SQL'en. Så er her to muligheder:
SELECT *
FROM table
WHERE
(posx = playerx AND posy = playery)
OR
(posx = playerx AND posy = playery - 1)
OR
(posx = playerx AND posy = playery + 1)
OR
(posx = playerx - 1 AND posy = playery)
OR
(posx = playerx + 1 AND posy = playery)
eller
SELECT *
FROM table
WHERE
Abs (posx-playerx) + Abs(poy-playery) <= 2
--
Nis Jorgensen
Amsterdam
Please include only relevant quotes, and reply below the quoted text. Thanks
| |
Matthiessen (12-03-2002)
| Kommentar Fra : Matthiessen |
Dato : 12-03-02 18:35 |
|
"Nis Jorgensen" <nis@dkik.dk> skrev i en meddelelse
news:k5bs8u8q3paspsn1qrp00o4uo2jqmheq9t@4ax.com...
> SELECT *
> FROM table
> WHERE
> Abs (posx-playerx) + Abs(poy-playery) <= 2
Takker Nis
Nr. 1 virker perfekt, dog ville det være en fordel at få nr 2 til at virke.
Jeg får en SQL streng der lyder : SELECT * FROM feltindex WHERE
Abs(xpos-2) + Abs(ypos-2) <= 2
Problemet med den er, at jeg får alle records ud fra databasen
| |
Nis Jorgensen (12-03-2002)
| Kommentar Fra : Nis Jorgensen |
Dato : 12-03-02 19:21 |
|
On Tue, 12 Mar 2002 18:34:59 +0100, "Matthiessen"
<matthiessen@tdcadsl.dk> wrote:
>"Nis Jorgensen" <nis@dkik.dk> skrev i en meddelelse
>news:k5bs8u8q3paspsn1qrp00o4uo2jqmheq9t@4ax.com...
>> SELECT *
>> FROM table
>> WHERE
>> Abs (posx-playerx) + Abs(poy-playery) <= 2
>
>Takker Nis
>
>Nr. 1 virker perfekt, dog ville det være en fordel at få nr 2 til at virke.
>Jeg får en SQL streng der lyder : SELECT * FROM feltindex WHERE
>Abs(xpos-2) + Abs(ypos-2) <= 2
>
>Problemet med den er, at jeg får alle records ud fra databasen
Maaske fordi jeg vaklede mellem at skrive "< 2" og "<= 1" - proev en
af dem.
--
Nis Jorgensen
Amsterdam
Please include only relevant quotes, and reply below the quoted text. Thanks
| |
Matthiessen (12-03-2002)
| Kommentar Fra : Matthiessen |
Dato : 12-03-02 20:14 |
|
>>> Maaske fordi jeg vaklede mellem at skrive "< 2" og "<= 1"
"<2" virkede. Takker mange gange !! Genialt må jeg sige, havde sku ikke
tænkt på at det kunne gøres på den måde :) For lige at opressumere min
færdige streng ( hvis andre ska bruge den ) :
SELECT * FROM feltindex WHERE Abs(xpos-" & playerposx & ") + Abs(ypos-" &
playerposy & ") < 2
Nu må jeg se om den virker når jeg udvider min bane, ellers vender jeg lige
tilbage i morgen.
Hilsen
Anders
| |
Matthiessen (14-03-2002)
| Kommentar Fra : Matthiessen |
Dato : 14-03-02 21:29 |
|
Jeg har fundet ud af at det ikke var så brugervenligt med kun 3*3 felter i
form af et kryds.
Jeg ku tænke mig 5*5 ( uden kryds ). Hvordan skal det se ud så ?
Hilsen
Anders
| |
Nis Jorgensen (15-03-2002)
| Kommentar Fra : Nis Jorgensen |
Dato : 15-03-02 19:17 |
|
On Thu, 14 Mar 2002 21:28:57 +0100, "Matthiessen"
<matthiessen@tdcadsl.dk> wrote:
>Jeg har fundet ud af at det ikke var så brugervenligt med kun 3*3 felter i
>form af et kryds.
>Jeg ku tænke mig 5*5 ( uden kryds ). Hvordan skal det se ud så ?
Nu har jeg givet dig "metoden" - saa kan du vel selv lave om naar der
er brug for det ...
(men jeg ville nok bruge noget med abs(x-px) < 3 AND Abs(y-py) < 3 )
--
Nis Jorgensen
Amsterdam
Please include only relevant quotes, and reply below the quoted text. Thanks
| |
Matthiessen (15-03-2002)
| Kommentar Fra : Matthiessen |
Dato : 15-03-02 19:57 |
|
> Nu har jeg givet dig "metoden" - saa kan du vel selv lave om naar der
> er brug for det ...
Ja det sku jeg nok ha gjordt. Den nemmeste løsning er ikke altid den bedste
;)
Takker
| |
|
|