Eli Miten tallennan taulukkoon tilen valitun "Reunan" ?
Kun tilaa pitää varata yhdestä tilestä 4, kahdesta 7 ja neljästä 12 ?
ja miten voisin katsoa valinnan järkevästi ? (Koetan selventää asiaa tarvittaessa)
(Edit: hups. piti postata Tyhmiin Kysymyksiin, no iha sama )
Millainen Taulukko? "Tilen reunan Valinta"
Millainen Taulukko? "Tilen reunan Valinta"
-On selkeästi impulsiivinen koodaaja joka...
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Millainen Taulukko? "Tilen reunan Valinta"
Minkä reunan? Aiotko tehdä karttasysteemiä? Eivätkö neliöt riitä?Dark Code wrote:Eli Miten tallennan taulukkoon tilen valitun "Reunan" ?
Kun tilaa pitää varata yhdestä tilestä 4, kahdesta 7 ja neljästä 12 ?
ja miten voisin katsoa valinnan järkevästi ? (Koetan selventää asiaa tarvittaessa)
(Edit: hups. piti postata Tyhmiin Kysymyksiin, no iha sama )
Re: Millainen Taulukko? "Tilen reunan Valinta"
En vaan "Lauta peliä", Tässä koodi joka vähän selvittää asiaa:
Eli pitäisi merkitä taulukkoon missä kohtaa tuo "Kursori" on ollut ruudukossa.
En keksinyt (Tunnin) pohdiskelun jälkeenkään järkevää ratkaisua, eli saa olla vaikka purka koodia...
Code: Select all
//COPYRIGHT BY DARK CODE
// ELI MINULTA ON KYSYTTÄVÄ LUPA TÄMÄN SORSAN KÄYTTÖÖN (saa testata, ei muokata)
SCREEN 610,610
Dim i,x,y
Dim Cx,Cy,Mx,My
Dim MixPros,MixWay
MixWay=1
Repeat
Color 128,128,128
For i=1 To 18
Box 32,i*32,545,1
Next i
For i=1 To 18
Box i*32,32,1,545
Next i
If MixPros>100 Then MixWay=-1
If MixPros<0 Then MixWay=1
MixPros=MixPros+MixWay
Mx=MouseX()
My=MouseY()
Cx=RoundDown(Mx/32)
Cy=RoundDown(My/32)
Dim centerx,centery,xLeft,yUp,xRight,yDown
centerx=Cx*32+16
centery=Cy*32+16
xLeft=Cx*32
yUp=Cy*32
xRight=Cx*32+32
yDown=Cy*32+32
MixColor(MixPros,128,200,4,255,0,0)
If PointInTri(Mx,My,centerx,centery+1,xLeft-1,yUp-1,xRight+1,yUp-1)
Line xLeft,yUp-1,xRight,yUp-1
Line xLeft,yUp+1,xRight,yUp+1
MixColor(MixPros,0,255,0,255,0,0)
Line xLeft,yUp,xRight,yUp
ElseIf PointInTri(Mx,My,centerx-1,centery,xRight+1,yUp-1,xRight+1,yDown+1)
Line xRight+1,yUp,xRight+1,yDown
Line xRight-1,yUp,xRight-1,yDown
MixColor(MixPros,0,255,0,255,0,0)
Line xRight,yUp,xRight,yDown
ElseIf PointInTri(Mx,My,centerx,centery-1,xLeft-1,yDown+1,xRight+1,yDown+1)
Line xLeft,yDown+1,xRight,yDown+1
Line xLeft,yDown-1,xRight,yDown-1
MixColor(MixPros,0,255,0,255,0,0)
Line xLeft,yDown,xRight,yDown
ElseIf PointInTri(Mx,My,centerx+1,centery,xLeft-1,yUp-1,xLeft-1,yDown+1)
Line xLeft-1,yUp,xLeft-1,yDown
Line xLeft+1,yUp,xLeft+1,yDown
MixColor(MixPros,0,255,0,255,0,0)
Line xLeft,yUp,xLeft,yDown
EndIf
DrawScreen
Forever
Function PointInTri(x#, y#, x1#, y1#, x2#, y2#, x3#, y3#)
ab# = ((y - y1) * (x2 - x1) - (x - x1) * (y2 - y1)) / 1000.0
bc# = ((y - y2) * (x3 - x2) - (x - x2) * (y3 - y2)) / 1000.0
ca# = ((y - y3) * (x1 - x3) - (x - x3) * (y1 - y3)) / 1000.0
If (ab * bc) > 0 And (bc * ca) > 0 Then Return True
Return False
EndFunction
Function MixColor(fact#,r,g,b,r2,g2,b2)
fact=Max(Min(fact,100),0)*0.01
Color fact*r+(1.0-fact)*r2,fact*g+(1.0-fact)*g2,fact*b+(1.0-fact)*b2
EndFunction
En keksinyt (Tunnin) pohdiskelun jälkeenkään järkevää ratkaisua, eli saa olla vaikka purka koodia...
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Millainen Taulukko? "Tilen reunan Valinta"
Siis haluat tallentaa, mikä viiva on ollut valittuna? Sehän on melko simppeliä: teet muuttujan "sivu", joka saa arvon sen mukaan, mikä on valittuna. Esim. 0 = yläsivu, 1 = oikea sivu, 2 = alasivu, 3 = vasen sivu. Ja sitten tallennat, mikä loota on valittuna. (Ovela tapa tarkistaa pistekolmiosisäkkäisyys, tuohon pitää perehtyä)Guest wrote:En vaan "Lauta peliä", Tässä koodi joka vähän selvittää asiaa:Eli pitäisi merkitä taulukkoon missä kohtaa tuo "Kursori" on ollut ruudukossa.Code: Select all
//COPYRIGHT BY DARK CODE // ELI MINULTA ON KYSYTTÄVÄ LUPA TÄMÄN SORSAN KÄYTTÖÖN (saa testata, ei muokata) SCREEN 610,610 Dim i,x,y Dim Cx,Cy,Mx,My Dim MixPros,MixWay MixWay=1 Repeat Color 128,128,128 For i=1 To 18 Box 32,i*32,545,1 Next i For i=1 To 18 Box i*32,32,1,545 Next i If MixPros>100 Then MixWay=-1 If MixPros<0 Then MixWay=1 MixPros=MixPros+MixWay Mx=MouseX() My=MouseY() Cx=RoundDown(Mx/32) Cy=RoundDown(My/32) Dim centerx,centery,xLeft,yUp,xRight,yDown centerx=Cx*32+16 centery=Cy*32+16 xLeft=Cx*32 yUp=Cy*32 xRight=Cx*32+32 yDown=Cy*32+32 MixColor(MixPros,128,200,4,255,0,0) If PointInTri(Mx,My,centerx,centery+1,xLeft-1,yUp-1,xRight+1,yUp-1) Line xLeft,yUp-1,xRight,yUp-1 Line xLeft,yUp+1,xRight,yUp+1 MixColor(MixPros,0,255,0,255,0,0) Line xLeft,yUp,xRight,yUp ElseIf PointInTri(Mx,My,centerx-1,centery,xRight+1,yUp-1,xRight+1,yDown+1) Line xRight+1,yUp,xRight+1,yDown Line xRight-1,yUp,xRight-1,yDown MixColor(MixPros,0,255,0,255,0,0) Line xRight,yUp,xRight,yDown ElseIf PointInTri(Mx,My,centerx,centery-1,xLeft-1,yDown+1,xRight+1,yDown+1) Line xLeft,yDown+1,xRight,yDown+1 Line xLeft,yDown-1,xRight,yDown-1 MixColor(MixPros,0,255,0,255,0,0) Line xLeft,yDown,xRight,yDown ElseIf PointInTri(Mx,My,centerx+1,centery,xLeft-1,yUp-1,xLeft-1,yDown+1) Line xLeft-1,yUp,xLeft-1,yDown Line xLeft+1,yUp,xLeft+1,yDown MixColor(MixPros,0,255,0,255,0,0) Line xLeft,yUp,xLeft,yDown EndIf DrawScreen Forever Function PointInTri(x#, y#, x1#, y1#, x2#, y2#, x3#, y3#) ab# = ((y - y1) * (x2 - x1) - (x - x1) * (y2 - y1)) / 1000.0 bc# = ((y - y2) * (x3 - x2) - (x - x2) * (y3 - y2)) / 1000.0 ca# = ((y - y3) * (x1 - x3) - (x - x3) * (y1 - y3)) / 1000.0 If (ab * bc) > 0 And (bc * ca) > 0 Then Return True Return False EndFunction Function MixColor(fact#,r,g,b,r2,g2,b2) fact=Max(Min(fact,100),0)*0.01 Color fact*r+(1.0-fact)*r2,fact*g+(1.0-fact)*g2,fact*b+(1.0-fact)*b2 EndFunction
En keksinyt (Tunnin) pohdiskelun jälkeenkään järkevää ratkaisua, eli saa olla vaikka purka koodia...
Re: Millainen Taulukko? "Tilen reunan Valinta"
Ei toimi tuolla tavalla, koska ruutujen reunat ovat yhteisiä (joka viiva erikseen).
Ja ne pitääisi saada tallennettua 2D-Taulukkoon, että voisin tarkistaa että onko viiva "varattu" lisäämisen yhteydessä.
Itse noilla ruuduilla ei ole mitään merkitystä, vain viivoilla.
Ehdottamallasi tavalla saisin vain yhden reunan käyttöön ja tarkistaminen olisi vähän "???" hommaa.
Ja tuo kolmiotarkastus on CBSDK:tä.
Ja ne pitääisi saada tallennettua 2D-Taulukkoon, että voisin tarkistaa että onko viiva "varattu" lisäämisen yhteydessä.
Itse noilla ruuduilla ei ole mitään merkitystä, vain viivoilla.
Ehdottamallasi tavalla saisin vain yhden reunan käyttöön ja tarkistaminen olisi vähän "???" hommaa.
Ja tuo kolmiotarkastus on CBSDK:tä.
-On selkeästi impulsiivinen koodaaja joka...
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Millainen Taulukko? "Tilen reunan Valinta"
Miksi kaksiulotteiseen? Tee systeemi, joka numeroi nuo viivat automaagisesti, tallenna sitten luvut yksiulotteiseen taulukkoon. Enkä käsitä, miksi ja miten haluat valita noita viivoja, jos ruuduilla ei ole mitään merkitystä.Dark Code wrote:Ei toimi tuolla tavalla, koska ruutujen reunat ovat yhteisiä (joka viiva erikseen).
Ja ne pitääisi saada tallennettua 2D-Taulukkoon, että voisin tarkistaa että onko viiva "varattu" lisäämisen yhteydessä.
Itse noilla ruuduilla ei ole mitään merkitystä, vain viivoilla.
Ehdottamallasi tavalla saisin vain yhden reunan käyttöön ja tarkistaminen olisi vähän "???" hommaa.
Ja tuo kolmiotarkastus on CBSDK:tä.