Tyhmät kysymykset (I/2009)
-
- Active Member
- Posts: 135
- Joined: Fri Mar 07, 2008 8:49 pm
Re: Tyhmät kysymykset
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
Taisi mennä offtopiciksi. Pahoittelen.[/size]
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]
Re: Tyhmät kysymykset
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ä =(
Kysymys kuuluu: Miten tällaisen voi tehdä?
Mun aivot ei pelaa näin illasta, en saa tuota ns. "nopanheittomasiinaa" tehtyä =(
Re: Tyhmät kysymykset
tutustu rand()-runktioon. esim:
Code: Select all
noppa=rand(1,99)
if noppa<14 then kriittinenosuma
if noppa<4 then superkriittinenosuma
Re: Tyhmät kysymykset
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.
Re: Tyhmät kysymykset
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
Re: Tyhmät kysymykset
Miten saadaan kartta alimmaiseksi? Mulla on sellainen ongelma, että kun ohjelma käynnistyy, kartan alla on hahmon energiapalkki ja fps-lukemat.
Re: Tyhmät kysymykset
Laita DrawGame-komento ennen fps-lukemia/energiapalkkeja.
Re: Tyhmät kysymykset
Miten typevihut saa törmäämään toisiinsa? tätä on tullut pähkäilytä jonkin aikaa...
-
- Advanced Member
- Posts: 349
- Joined: Mon Aug 27, 2007 9:00 pm
- Location: Lapinjärvi, Finland
- Contact:
Re: Tyhmät kysymykset
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.
Runoblogi, vuodatusta ja sekoiluja.
Re: Tyhmät kysymykset
Pointobject ukko, mousewx(), mousewy()minäitse wrote:miten saan ukon kääntymään hiiren mukaan?
Re: Tyhmät kysymykset
Koodi toimi vai loopin sisälle laitettuna, jolloin peli hidastui diashowksi.(siis omaan peliin sovellettuna^^)otto90x wrote:Esimerkiksi näinCode: 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
Re: Tyhmät kysymykset
Katso prkl, pointobject kääntääkin objektin kohti toista objektia. 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:minäitse wrote:ei toimi
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.
Re: Tyhmät kysymykset
minäitse wrote:miten saan ukon kääntymään hiiren mukaan?
tällä saa hyvin
tähtäys=GetAngle(400,400,MouseX(),MouseY())
RotateObject ukko,tähtäys
Re: Tyhmät kysymykset
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
Sumu Games: Sam, Ur eye!
Re: Tyhmät kysymykset
ei mitt..
EDIT:
VIIDES KYMMENES VIESTI!
Last edited by rami123 on Sun Apr 12, 2009 2:19 pm, edited 2 times in total.
Re: Tyhmät kysymykset
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.
-
- Active Member
- Posts: 135
- Joined: Fri Mar 07, 2008 8:49 pm
Re: Tyhmät kysymykset
Tällä tavalla:
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ä.
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