Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
moi

Re: Tyhmät kysymykset

Post by moi » Fri Sep 05, 2008 9:47 pm

Nii tietääkö kukaan tohon ylempää vastausta?

User avatar
Alligaattori
Active Member
Posts: 135
Joined: Fri Mar 07, 2008 9:49 pm

Re: Tyhmät kysymykset

Post by Alligaattori » Fri Sep 05, 2008 10:18 pm

En tiedä ennen tarkkaa syyniä, mutta Printin ja WaitKeyn avulla voi metsästää maveja aika tehokkaasti.

Paitsi vanhalla kotikoneellani, jossa tulee maveja satunnaisesti satunnaisiin paikkoihin, vaikka peli toimisi kymmenen vuotta uudemmassa koneessa ja systeemissä. Mavin tappo onnistuu (vanhassa koneessa siis) yleensä laittamalla mavaavan rivin ylle tai alle lauseen tyyliin

Code: Select all

If 1=2 Then MakeError "tätä ei koskaan näytetä, mutta se tappaa mavin"

Taisi mennä offtopiciksi. Pahoittelen.[/size]

User avatar
DumBasZ
Newcomer
Posts: 20
Joined: Fri Aug 29, 2008 7:52 am

Re: Tyhmät kysymykset

Post by DumBasZ » Sat Sep 06, 2008 9:39 pm

Oletetaan että on taistelu kahden ottelijan välillä, ja pelaaja on toinen niistä. Oletetaan myös, että on 100-sivuinen noppa, jossa on luvut 0:sta 99:ään. Noppaa heitetään painamalla Enteriä. Noppaa heitetään silloin, kun on oma vuoro "lyödä" vastustajaa. Jos nopan luku >= 95, tulee "torjunta"; jos nopan luku =< 14, tulee "kriittinen osuma"; jos nopan luku =< 4, tulee "superkriittinen osuma". Oman lyöntivuoronsa jälkeen on vastustajan vuoro. Vastustajan nopan heitto tehdään automaattisesti. Jos ottelijan elämäpisteet ovat nollissa, hän häviää.

Kysymys kuuluu: Miten tällaisen voi tehdä?

Mun aivot ei pelaa näin illasta, en saa tuota ns. "nopanheittomasiinaa" tehtyä =(

User avatar
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot » Sat Sep 06, 2008 10:01 pm

tutustu rand()-runktioon. esim:

Code: Select all

noppa=rand(1,99)
if noppa<14 then kriittinenosuma
if noppa<4 then superkriittinenosuma

DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset

Post by DatsuniG » Sat Sep 06, 2008 10:24 pm

Kuinka saan määriteltyä Data-kerroksen avulla esim. poweruppien paikat? Kokeilin itse tämmöistä, mutta ei toiminut:

Code: Select all

For y=1 To MapWidth()
For x=1 To MapHeight()
    If GetMap2(3,x,y)=1 Then
    Arrow.NUOLI=New(Nuoli)
    arrow\obj=CloneObject(powerup)
    PositionObject arrow\obj,x,y
    EndIf 
   Next x
Next y
EDIT:

No nyt kaikki tulee samaan rykelmään : /

Hengität nyt manuaalisesti.

User avatar
Murskaaja
Member
Posts: 92
Joined: Tue Aug 28, 2007 8:19 pm
Contact:

Re: Tyhmät kysymykset

Post by Murskaaja » Sat Sep 06, 2008 10:36 pm

Yrität sijoittaa objekteja kentälle tilekoordinaattien mukaan. Kun muutat ne maailmankoordinaateiksi, niin pitäisi onnistua:

Code: Select all

TileW = 32 'tilen leveys
TileH = 32 'tilen korkeus

For y=1 To MapWidth()
    For x=1 To MapHeight()
        If GetMap2(3,x,y)=1 Then
            Arrow.NUOLI=New(Nuoli)
            arrow\obj=CloneObject(powerup)
            wx = (x*TileW-TileW/2)-(MapWidth()*TileW)/2
            wy = ((y*TileH-TileH/2)-(MapHeight()*TileH)/2)*-1
            PositionObject arrow\obj,wx,wy
        EndIf
    Next x
Next y
ASCII star wars Xtreme | Cool Bombers | Combat (kehitteillä)

RedShadow productions

User avatar
DumBasZ
Newcomer
Posts: 20
Joined: Fri Aug 29, 2008 7:52 am

Re: Tyhmät kysymykset

Post by DumBasZ » Sun Sep 07, 2008 2:17 am

Miten saadaan kartta alimmaiseksi? Mulla on sellainen ongelma, että kun ohjelma käynnistyy, kartan alla on hahmon energiapalkki ja fps-lukemat.

User avatar
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot » Sun Sep 07, 2008 2:50 am

Laita DrawGame-komento ennen fps-lukemia/energiapalkkeja.

nyt sattu juhaa leukaan

Re: Tyhmät kysymykset

Post by nyt sattu juhaa leukaan » Sun Sep 07, 2008 1:18 pm

Miten typevihut saa törmäämään toisiinsa? tätä on tullut pähkäilytä jonkin aikaa...

User avatar
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset

Post by otto90x » Sun Sep 07, 2008 6:34 pm

Esimerkiksi näin

Code: Select all

SCREEN 1024,768

Type vihu
    Field obj
End Type


mastervihu=LoadObject("media/guy.bmp",36)
ShowObject mastervihu,OFF

For i=1 To 10
    v.vihu=New(vihu)
    v\obj=CloneObject(mastervihu)
Next i


//tässä asetetaan törmäykset kaikille äsken luoduille vihuille
For v.vihu=Each vihu //Käydään lista läpi

    vv.vihu=First(vihu) // otetaan vv muuttujaan ensimmäisen vihun osoitin
    vv=After(v) // vaihdetaan se niin että se on v muuttujan jälkeisen vihun osoitin
    While vv<>NULL //jatketaan kunnes vv on käynyt listan läpi
    
        SetupCollision vv\obj,v\obj,2,2,2//asetetaan törmäykset
        SetupCollision v\obj,vv\obj,2,2,2
        vv=After(vv) //vaihdetaan taas vv muuttujaa siten että siinä on seuraavan vihun osoitin
    Wend
    
Next v

//Eli jos ajatellaan että vihuja on 3
// tällöin vihujen lista on 1 2 3
//siis ensin asetetaan törmäys 1 ja 2 välillä sitten 1 ja kolmosen välillä
// sitten vasta siirrytään kakkosen ja asetataan törmäys sen ja kolmosen välille

//tällöin säästetään hieman resursseja


DrawToWorld ON


Repeat

    Circle -200,200,400,0
    

    For v.vihu=Each vihu
        MoveObject v\obj,3
        If Rand(20)=5 Then TurnObject v\obj,Rand(-60,60)
        If Distance(ObjectX(v\obj),ObjectY(v\obj),0,0)>200 Then RotateObject v\obj,GetAngle(ObjectX(v\obj),-ObjectY(v\obj),0,0)
    Next v



    DrawScreen

Forever
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.

minäitse

Re: Tyhmät kysymykset

Post by minäitse » Mon Sep 08, 2008 2:25 pm

miten saan ukon kääntymään hiiren mukaan?

User avatar
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: Tyhmät kysymykset

Post by regalis » Mon Sep 08, 2008 2:29 pm

minäitse wrote:miten saan ukon kääntymään hiiren mukaan?
Pointobject ukko, mousewx(), mousewy()

minäitse

Re: Tyhmät kysymykset

Post by minäitse » Mon Sep 08, 2008 2:31 pm

ei toimi

nyt sattu juhaa leukaan

Re: Tyhmät kysymykset

Post by nyt sattu juhaa leukaan » Mon Sep 08, 2008 3:12 pm

otto90x wrote:Esimerkiksi näin

Code: Select all

SCREEN 1024,768

Type vihu
    Field obj
End Type


mastervihu=LoadObject("media/guy.bmp",36)
ShowObject mastervihu,OFF

For i=1 To 10
    v.vihu=New(vihu)
    v\obj=CloneObject(mastervihu)
Next i


//tässä asetetaan törmäykset kaikille äsken luoduille vihuille
For v.vihu=Each vihu //Käydään lista läpi

    vv.vihu=First(vihu) // otetaan vv muuttujaan ensimmäisen vihun osoitin
    vv=After(v) // vaihdetaan se niin että se on v muuttujan jälkeisen vihun osoitin
    While vv<>NULL //jatketaan kunnes vv on käynyt listan läpi
    
        SetupCollision vv\obj,v\obj,2,2,2//asetetaan törmäykset
        SetupCollision v\obj,vv\obj,2,2,2
        vv=After(vv) //vaihdetaan taas vv muuttujaa siten että siinä on seuraavan vihun osoitin
    Wend
    
Next v

//Eli jos ajatellaan että vihuja on 3
// tällöin vihujen lista on 1 2 3
//siis ensin asetetaan törmäys 1 ja 2 välillä sitten 1 ja kolmosen välillä
// sitten vasta siirrytään kakkosen ja asetataan törmäys sen ja kolmosen välille

//tällöin säästetään hieman resursseja


DrawToWorld ON


Repeat

    Circle -200,200,400,0
    

    For v.vihu=Each vihu
        MoveObject v\obj,3
        If Rand(20)=5 Then TurnObject v\obj,Rand(-60,60)
        If Distance(ObjectX(v\obj),ObjectY(v\obj),0,0)>200 Then RotateObject v\obj,GetAngle(ObjectX(v\obj),-ObjectY(v\obj),0,0)
    Next v



    DrawScreen

Forever
Koodi toimi vai loopin sisälle laitettuna, jolloin peli hidastui diashowksi.(siis omaan peliin sovellettuna^^)

User avatar
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: Tyhmät kysymykset

Post by regalis » Mon Sep 08, 2008 4:35 pm

minäitse wrote:ei toimi
Katso prkl, pointobject kääntääkin objektin kohti toista objektia. :D Ei ole tullut vähään aikaan käytettyä CB:tä (saati sitten CB:n valmiita objektisysteemeitä), joten ei ole oikein objektikomennot hallussa... Näin pitäisi toimia:

Code: Select all

RotateObject ukko, GetAngle(objectx(ukko), objecty(ukko), mousewx(), mousewy())
Last edited by regalis on Mon Sep 08, 2008 4:40 pm, edited 2 times in total.

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Mon Sep 08, 2008 4:36 pm

minäitse wrote:miten saan ukon kääntymään hiiren mukaan?

tällä saa hyvin :D

tähtäys=GetAngle(400,400,MouseX(),MouseY())
RotateObject ukko,tähtäys

User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn » Mon Sep 08, 2008 4:37 pm

minäitse wrote:miten saan ukon kääntymään hiiren mukaan?

Code: Select all

FrameLimit 40 
SCREEN 800,600

ukko=LoadObject("media\guy.bmp",32)
target=LoadObject("media\cow.bmp")


Repeat 

PositionObject target,MouseWX(),MouseWY()'sijoitetaan tähtäin hiiten koordinaatteihin
MoveObject ukko,3'liikutetaan ukkoa
PointObject ukko,target'käännetään ukko tähtäimeen

If ObjectsOverlap (target,ukko) Then MoveObject ukko,-3'Ettei ukko tärise maalissa
DrawScreen
Forever 
noin toimii.(Näitähän nyt tuli monta) :P
Sumu Games: Sam, Ur eye!

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Mon Sep 08, 2008 4:49 pm

ei mitt..

EDIT:

VIIDES KYMMENES VIESTI!

Last edited by rami123 on Sun Apr 12, 2009 2:19 pm, edited 2 times in total.

Eräs Vierailija

Re: Tyhmät kysymykset

Post by Eräs Vierailija » Mon Sep 08, 2008 6:03 pm

Kuinka saisi tehtyä strategiapeliin sellaisen "laatikkovalinnan", jolla voi valita useita yksiköitä yhtä aikaa? Yksiköiden valinta ei ole ongelma, vaan sen laatikon piirtäminen.

User avatar
Alligaattori
Active Member
Posts: 135
Joined: Fri Mar 07, 2008 9:49 pm

Re: Tyhmät kysymykset

Post by Alligaattori » Mon Sep 08, 2008 6:17 pm

Tällä tavalla:

Code: Select all

Dim bx1,by1,bx2,by2,check,nbx1,nby1,nbx2,nby2

Repeat

    // muuta koodia...
    
    If check = 0 Then
        If MouseDown(1) Then 
            check = 1
            bx1 = MouseX()
            by1 = MouseY()
        End If
    ElseIf check = 1 Then
        If MouseDown(1) = 0 Then 
            check = 0
        Else
            bx2 = MouseX()
            by2 = MouseY()
            
            nbx1 = bx1
            nby1 = by1
            nbx2 = bx2
            nby2 = by2
            
            If bx1 > bx2 Then
                nbx1 = nbx1 + nbx2
                nbx2 = nbx1 - nbx2
                nbx1 = nbx1 - nbx2
            End If
            
            If by1 > by2 Then
                nby1 = nby1 + nby2
                nby2 = nby1 - nby2
                nby1 = nby1 - nby2            
            End If
            
            Box nbx1,nby1,nbx2-nbx1,nby2-nby1,0
        End If
    End If

    DrawScreen
Forever
Yksiköiden valinnan teko riippuu siitä miten olet ne tehnyt. Tuskin kuitenkaan on liian hankalaa käydä kaikki yksiköt läpi ja katsoa, mitkä niistä ovat laatikon sisällä, kun hiirennappi nostetaan, eli esimerkkini rivien 14 ja 16 sisällä.

Locked