Page 1 of 2

Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:14 pm
by Re1z0r
En ymmärrä miksei tämä toimi. No en kuitenkaan ole kauheasti koodannut pelejä niin ehkä jotain jäi huomaamatta :roll: .

[codebox]

Code: Select all

'FPS

peli:


Type monsterit
    Field obj
End Type



FrameLimit 40

monsteri = LoadObject("media\cow.bmp"360)
ShowObject monsteri,OFF



tähtäin = LoadObject("media\target.bmp"360)

vihu.monsterit = New(monsterit)
vihu\obj=CloneObject(monsteri)

Repeat
    
    If MouseHit(1) And ObjectsOverlap(monsteri,tähtäin,2) Then
        DeleteObject vihu\obj
        Delete vihu
    EndIf    
    
    PositionObject tähtäin, MouseX(),MouseY()
    
    DrawScreen

Forever  
[codebox]

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:21 pm
by TheFish
Asetat tähtäimen sijainnin maailman koordinaateilla, mutta mousex() ja mousey() palauttavat ruudun koordinaatteja. Komenna

Code: Select all

ScreenPositionObject tähtäin, MouseX(),MouseY().
Vähän aiheen vierestä voisi sanoa, että et tarvitse pyöritysarvoja ainakaan tähtäimelle, joten kannattaa jättää se 360 objektin latauksen lopusta pois.

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:26 pm
by Re1z0r
Ei mun coolBasic tue tollasta komentoa, sattuu olemaa vähä vanhempi versio ku uusin sekoaa koneella nii pahasti että hirvittää :( Olisko mitää koodii Beta 10.2?? Nii ja ku yrittää pistää tota komentoo nii tulee joku muu virheilmotus ku MAV. Joku fatal error.

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:28 pm
by iTKEVAnAKKI
Toimiiko edes MouseWX() ja MouseWY()?? En tiedä mitä eroja näillä versioilla on...

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:30 pm
by Re1z0r
Ikävä kyllä ei. Alun perin kokeilin tota koodia ku luin sen täält foorumilt.

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:40 pm
by vilQuri
Kylläpäs toimii Minulla ainakin!!

Ongelmana on se että sinulla lukee sielä "PositionObject tähtäin, MouseX() ,MouseY()"
siellä pitäisi olla "PositionObject tähtäin, MouseWX() ,MouseWY()" Koska MouseX() ja MouseY() kertovat vain hiiren sijainnin vaaka suunnassa
mutta kun taas MouseWX() ja MouseWY() kertovat hiiren sijainnin pelimailmassa. Tässä koodisi korjattu versio:

Code: Select all

'FPS

peli:


Type monsterit
    Field obj
End Type



FrameLimit 40


monsteri = LoadObject("media\cow.bmp"360)
ShowObject monsteri,OFF



tähtäin = LoadObject("media\target.bmp"360)

vihu.monsterit = New(monsterit)
vihu\obj=CloneObject(monsteri)

Repeat
   
    If MouseHit(1) And ObjectsOverlap(monsteri,tähtäin,2) Then
        DeleteObject vihu\obj
        Delete vihu
    EndIf   
   
    PositionObject tähtäin, MouseWX(),MouseWY()
   
    DrawScreen

Forever 


Huom! jos haluat että valkoinen hiiri ei näy pelissä vain pelkkä tähtäin niin pistä Repeatin alle "ShowMouse OFF"

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:45 pm
by iTKEVAnAKKI
vilQuri wrote:Kylläpäs toimii Minulla ainakin!!

Ongelmana on se että sinulla lukee sielä "PositionObject tähtäin, MouseX() ,MouseY()"
siellä pitäisi olla "PositionObject tähtäin, MouseWX() ,MouseWY()" Koska MouseX() ja MouseY() kertovat vain hiiren sijainnin vaaka suunnassa
mutta kun taas MouseWX() ja MouseWY() kertovat hiiren sijainnin pelimailmassa.
Mistä lähtien?!!?! :shock: MouseX() ja MouseY() kertovat hiiren sijainnin pelimaailmassa, MouseWX() ja MouseWY() näytöllä. Ja hänellä on vanha versio jossa ei ole MouseWX() tai mouseWY()tä. Tai ScreenPositionObjectia.

Kun mouseX() ja mousey() kerrotaan jollain tietyllä luvulla niin saadan ruudun koordinnatit(?). En ole varma, enkä nyt muista sitä lukua jos se on niin.

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:45 pm
by Re1z0r
Ei toimi yhä toi mouseWX mouseWY juttu, varmuuden vuoksi kopioin sun korjaamas koodin ja pistin sen uudelle tiedostolle mut ei toimi. Sitten pistin vielä hakuun noi komennot mut ei löytyny mitää. Et en tiedä, ehkä täs mun coolbasicissa o tullu jotai häikkää asennuksessa tai jossai :(

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:47 pm
by Re1z0r
Tietäsitkö mist löytys se numero? Olis hyvä saada toi toimimaa.

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:53 pm
by vilQuri
Kappas vanha versio en huomannu lukea :oops:

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 5:56 pm
by iTKEVAnAKKI
Ite en tiedä sitä, ja yritin selata vanhaa foorumia, mutta en löytänyt sitä :( Mutta lähetin Harakalle PMn ja toivottavasti hän tietää. Miksi uusi Cb ei toimi?

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 6:51 pm
by TheFish
Pienen testailun jälkeen havaitsin tuon korjautuvan toimivan näin:

Code: Select all

'FPS

peli:


Type monsterit
    Field obj
End Type



FrameLimit 40


monsteri = LoadObject("media\cow.bmp"360)
ShowObject monsteri,OFF

tähtäin = LoadObject("media\target.bmp"360)

vihu.monsterit = New(monsterit)
vihu\obj=CloneObject(monsteri)

Repeat
   
    If MouseHit(1) And ObjectsOverlap(monsteri,tähtäin,2) Then
        DeleteObject vihu\obj
        Delete vihu
    EndIf   
   
    PositionObject tähtäin, MouseX()-ScreenWidth()/2,-MouseY()+ScreenHeight()/2

    DrawScreen

Forever 
Tuossa kyllä tulee mav jos lehmä on ammuttu ja klikkaa hiirellä. Siinä pitää tarkastaa on lehmä elossa vielä.

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 7:20 pm
by koodaaja
Dödi, täällähän pitää oikaista muutamat väitteet faktoiksi;

[quote = "vilQuri"]MouseX() ja MouseY() kertovat vain hiiren sijainnin vaaka suunnassa[/quote]

Eivät vaakasuunnassa vaan ruutukoordinaatteina.

[quote=iTKEVAnAKKI]MouseX() ja MouseY() kertovat hiiren sijainnin pelimaailmassa, MouseWX() ja MouseWY() näytöllä[/quote]

Toisin päin, mousewx = mouse world x, hiiren maailman (pelimaailman) koordinaatit, sama y:llä.

[quote = "TheFish"]en oikein tiedä itse, että minkä takia tuo y koordinaatti piti tehdä eritavalla kuin x[/quote]

Siksi, että maailman koordinaateissa y kasvaa ylöspäin mentäessä, ruutukoordinaateissa alaspäin mentäessä. Ja noihin koordinaatteihin on lisättävä vielä camerax() ja cameray(), jotta toimisi ihan oikein.

Itse en tekisi tähtäintä objektilla, vaan seuraavasti:

Code: Select all

Map = LoadMap("Media\cdm2.til","Media\tileset.bmp")
Guy = LoadObject("Media\soldier.bmp",72)

Mouse = LoadImage("Media\cursor.bmp")
ShowMouse mouse

SetupCollision Guy,Map,2,4,2

Repeat

    TranslateObject Guy, (KeyDown(32)-KeyDown(30))*2, (KeyDown(17)-KeyDown(31))*2
    RotateObject Guy, GetAngle(ObjectX(Guy), -ObjectY(Guy),MouseWX(),-MouseWY())
    
    UpdateGame()
    
    CloneCameraPosition(Guy)
    DrawScreen
    
Forever

Re: Hiiri tähtäin

Posted: Fri Aug 31, 2007 7:53 pm
by iTKEVAnAKKI
Tässä olisi nyt harakan antamat functiot:

Code: Select all

Function MouseWorldX()
    Return CameraX()-ScreenWidth()/2+MouseX()
End Function

Function MouseWorldY()
    Return CameraY()+ScreenHeight()/2-MouseY()
End Function

Re: Hiiri tähtäin

Posted: Sat Sep 01, 2007 10:55 am
by Re1z0r
Joo kiitos vaan, nyt toimii :D

Re: Hiiri tähtäin

Posted: Sat Sep 01, 2007 5:24 pm
by Re1z0r
Joo tuli uus ongelma: Tein vastustajat Typella mut pystyn tappamaan vain ensimmäisen niistä.
[codebox]

Code: Select all

'FPS

peli:


Type monsterit
    Field obj
End Type



FrameLimit 40

monsteri = LoadObject("media\cow.bmp"360)
ShowObject monsteri,OFF

tähtäin = LoadObject("media\target.bmp"360)
ShowMouse OFF



Repeat
    
    PositionObject tähtäin, MouseX()-ScreenWidth()/2,-MouseY()+ScreenHeight()/2
    
    If TIMER()>record+1000 Then
        record=TIMER()
        vihu.monsterit = New(monsterit)
        vihu\obj=CloneObject(monsteri) 
        ObjectOrder tähtäin,1
        PositionObject vihu\obj, -600,0 
    EndIf
    
    For vihu.monsterit = Each monsterit
        MoveObject vihu\obj,5
            
            If MouseHit(1) And ObjectsOverlap(tähtäin,vihu\obj,2) Or MouseHit(1) And ObjectsOverlap(vihu\obj,tähtäin,2) Then
                DeleteObject vihu\obj
                Delete vihu  
            EndIf
            
            If ObjectX(vihu\obj)>600 Then
                DeleteObject vihu\obj
                Delete vihu
            EndIf    
                
     Next vihu
    
    DrawScreen

Forever        
[/codebox]

Re: Hiiri tähtäin

Posted: Sat Sep 01, 2007 5:34 pm
by koodaaja
Re1z0r wrote:Joo tuli uus ongelma: Tein vastustajat Typella mut pystyn tappamaan vain ensimmäisen niistä.

Code: Select all

'FPS

peli:


Type monsterit
    Field obj
End Type



FrameLimit 40

monsteri = LoadObject("media\cow.bmp"360)
ShowObject monsteri,OFF

tähtäin = LoadObject("media\target.bmp"360)
ShowMouse OFF



Repeat
    
    PositionObject tähtäin, MouseX()-ScreenWidth()/2,-MouseY()+ScreenHeight()/2
    
    If TIMER()>record+1000 Then
        record=TIMER()
        vihu.monsterit = New(monsterit)
        vihu\obj=CloneObject(monsteri) 
        ObjectOrder tähtäin,1
        PositionObject vihu\obj, -600,0 
    EndIf
    
    For vihu.monsterit = Each monsterit
        MoveObject vihu\obj,5
            
            If MouseHit(1) And ObjectsOverlap(tähtäin,vihu\obj,2) Or MouseHit(1) And ObjectsOverlap(vihu\obj,tähtäin,2) Then
                DeleteObject vihu\obj
                Delete vihu  
            EndIf
            
            If ObjectX(vihu\obj)>600 Then
                DeleteObject vihu\obj
                Delete vihu
            EndIf    
                
     Next vihu
    
    DrawScreen

Forever        
Itselläni tuli mavi heti ensimmäiseen osuttuani.

Code: Select all

If (MouseHit(1) And ObjectsOverlap(tähtäin,vihu\obj,2)) Or (MouseHit(1) And ObjectsOverlap(vihu\obj,tähtäin,2)) Then
    DeleteObject vihu\obj
    Delete vihu  
ElseIf ObjectX(vihu\obj)>600 Then
    DeleteObject vihu\obj
    Delete vihu
EndIf
Noin ainakin pitäisi toimia. ( nuo sulut tuossa iffissä ovat lähinnä selkeyden ja oikeaoppisuuden vuoksi, ainakin itselläni toimi ilmankin )

Re: Hiiri tähtäin

Posted: Sat Sep 01, 2007 8:36 pm
by Re1z0r
Joo toimii, kiitos taas

Re: Hiiri tähtäin

Posted: Sat Sep 01, 2007 9:04 pm
by Re1z0r
Ei muute toimikkaa. Nää pitää nyt ampua järjestyksessä, muute ei kuole. Onko tähän mitään helpotusta :|

Re: Hiiri tähtäin

Posted: Sat Sep 01, 2007 9:39 pm
by koodaaja
Re1z0r wrote:Ei muute toimikkaa. Nää pitää nyt ampua järjestyksessä, muute ei kuole. Onko tähän mitään helpotusta :|
Kuolevathan O,o ainakin minulla. Oletko muuttanut koodia? Ainakin tuolla ylemmällä koodilla pelittää mainiosti.