Tyhmät kysymykset (I/2009)

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

Re: Tyhmät kysymykset

Post by moi »

Nii tietääkö kukaan tohon ylempää vastausta?
Alligaattori
Active Member
Posts: 135
Joined: Fri Mar 07, 2008 8:49 pm

Re: Tyhmät kysymykset

Post by Alligaattori »

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]
DumBasZ
Newcomer
Posts: 20
Joined: Fri Aug 29, 2008 7:52 am

Re: Tyhmät kysymykset

Post by DumBasZ »

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ä =(
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot »

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 »

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.
Murskaaja
Member
Posts: 92
Joined: Tue Aug 28, 2007 8:19 pm
Contact:

Re: Tyhmät kysymykset

Post by Murskaaja »

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
DumBasZ
Newcomer
Posts: 20
Joined: Fri Aug 29, 2008 7:52 am

Re: Tyhmät kysymykset

Post by DumBasZ »

Miten saadaan kartta alimmaiseksi? Mulla on sellainen ongelma, että kun ohjelma käynnistyy, kartan alla on hahmon energiapalkki ja fps-lukemat.
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot »

Laita DrawGame-komento ennen fps-lukemia/energiapalkkeja.
nyt sattu juhaa leukaan

Re: Tyhmät kysymykset

Post by nyt sattu juhaa leukaan »

Miten typevihut saa törmäämään toisiinsa? tätä on tullut pähkäilytä jonkin aikaa...
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 »

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 »

miten saan ukon kääntymään hiiren mukaan?
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: Tyhmät kysymykset

Post by regalis »

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 »

ei toimi
nyt sattu juhaa leukaan

Re: Tyhmät kysymykset

Post by nyt sattu juhaa leukaan »

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^^)
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: Tyhmät kysymykset

Post by regalis »

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.
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

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 »

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!
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

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 »

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.
Alligaattori
Active Member
Posts: 135
Joined: Fri Mar 07, 2008 8:49 pm

Re: Tyhmät kysymykset

Post by Alligaattori »

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