Apua stragedia peliin
Apua stragedia peliin
Voisiko joku kertoa miten tehdään niin että kun painan jotakin kohtaa kartasta niin ukko1 kävelisi siihen kohtaan
- -Z-
- Devoted Member
- Posts: 682
- Joined: Tue Aug 28, 2007 3:33 pm
- Location: In ur danmaku, grazin ur bullets
Re: Apua stragedia peliin
Noh, teet silleensä, että kun jotakin kohtaa klikataan, luet sen pisteen koordinaatit muuttujiin. Sitten osoitat ukon tätä pistettä kohden, ja liikutat ukkoa.
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
Re: Apua stragedia peliin
Itse en osaa tehdä edes sitä valintaa ... Enkä edes ymmärrä muiden tekemiä juttuja. Strategiapeli on ihmeen vaikee tehdä.
Re: Apua stragedia peliin
eikä ole.
näin:
asetat jos klikataan niin tallennetaan hiiren koordinaatit ja sitten käsketään ukkoa menemään sinne.
aseta jotku tunnistimet siihen vaikka.
näin:
asetat jos klikataan niin tallennetaan hiiren koordinaatit ja sitten käsketään ukkoa menemään sinne.
aseta jotku tunnistimet siihen vaikka.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Apua stragedia peliin
Tässäpä yksinkertainen esimerkki, jossa voi valita yhden ukon kerrallaan ja liikuttaa sitä.
Code: Select all
SCREEN 800,600
//UKOT
Type UKOT
Field obj
Field targetX 'Kohde X
Field targetY 'Kohde Y
Field selected 'Onko valittu
EndType
//Ladataan ukko jota kopioidaan
masterUkko = LoadObject("media\guy.bmp",72)
ShowObject masterUkko,OFF 'Piilotetaan se
//Luodaan kymmenen ukkoa.
For i = 0 To 9
ukko.UKOT = New(UKOT)
ukko\obj = CloneObject(masterUkko)
PositionObject ukko\obj,Rand(-350,350),Rand(-100,100)
ukko\targetX = ObjectX(ukko\obj)
ukko\targetY = ObjectY(ukko\obj)
Next i
//PÄÄSILMUKKA
Repeat
//Käydään kaikki ukot läpi
For ukko.UKOT = Each UKOT
//Jos ukkoa klikataan valitaan se
If Distance(ObjectX(ukko\obj),ObjectY(ukko\obj),MouseWX(),MouseWY()) < 15 And MouseHit(1) Then
ClearMouse() 'Tyhjennetään hiiripuskuri
ukko\selected = 1 'Valittu = 1
EndIf
If ukko\selected = 1 Then 'Jos ukko ON valittu niin.
If MouseHit(1) Then 'Jos klikataan niin...
'...asetetaan ukon kohde hiiren koordinaatteihin.
ukko\targetX = MouseWX()
ukko\targetY = MouseWY()
EndIf
'Jos painetaan hiiren oikeaa näppäintä otetaan valinta pois
If MouseHit(2) Then ukko\selected = 0
DrawToWorld ON 'Piirto maailmakoordinaatteihin
'Piirretään laatikko valitun ukon ympärille
Box ObjectX(ukko\obj) - ObjectSizeX(ukko\obj)/2,ObjectY(ukko\obj) + ObjectSizeX(ukko\obj)/2,ObjectSizeX(ukko\obj),ObjectSizeY(ukko\obj),0
DrawToWorld OFF 'Piirto ruutukoordinaatteihin
EndIf
'Jos ukko ei ole päämäärässään niin...
If Distance(ObjectX(ukko\obj),ObjectY(ukko\obj),ukko\targetX,ukko\targetY) > 1 Then
'...käännetään se sitä kohti ja liikutetaan sitä
RotateObject ukko\obj,-GetAngle(ObjectX(ukko\obj),ObjectY(ukko\obj),ukko\targetX,ukko\targetY)
MoveObject ukko\obj,2
EndIf
Next ukko
DrawScreen
Forever
Re: Apua stragedia peliin
Kiitos. Tuo oli sellainen esimerkki minkä minä tajusin... Mulla on pari muutaikin esimerkkiä koneellani mutta ne on ihan outoja(mulle...).
Re: Apua stragedia peliin
En voinut vastustaa kiusausta tehdä omaa esimerkkiä. Tässä on siis merkittävänä erona strategiapeleistä tuttu valintaboksi, jonka avulla voi suuriakin joukkoja liikutella. Hiiri 1 valitsee, hiiri 2 liikuttaa.
Kommentteja on niukasti, mutta koodin ei pitäisi olla kovin epäselvää.
Kommentteja on niukasti, mutta koodin ei pitäisi olla kovin epäselvää.
Code: Select all
SCREEN 1024, 768
FrameLimit 40
Type tUkot
Field cX
Field cY
Field cTX
Field cTY
Field cValittu
Field cNopeus
End Type
//luodaan ukot
For i = 1 To 10
iu.tUkot = New( tUkot )
iu\cX = Rand( 0, ScreenWidth() )
iu\cY = Rand( 0, ScreenHeight() )
iu\cTX = iu\cX
iu\cTY = iu\cY
iu\cNopeus = 6
Next i
Repeat
//mousehit tallentaa valinta-boksin aloituskoordinaatit. Mouseup: kaikki boksin sisällä olevat joukot valitaan.
If MouseHit( 1 ) Then
_startX = MouseX()
_startY = MouseY()
ElseIf MouseUp( 1 ) Then
For iu.tUkot = Each tUkot
If iu\cX > _pieninX And iu\cX < _suurinX And iu\cY > _pieninY And iu\cY < _suurinY Then
If iu\cValittu = False Then
valittuja + 1
EndIf
iu\cValittu = True
Else
If iu\cValittu = True Then
valittuja - 1
EndIf
iu\cValittu = False
EndIf
Next iu
_startX = 0
_startY = 0
EndIf
//piirretään valintaboksi.
If _startX <> 0 Or _startY <> 0 Then
_pieninX = Min( _startX, MouseX() )
_pieninY = Min( _startY, MouseY() )
_suurinX = Max( _startX, MouseX() )
_suurinY = Max( _startY, MouseY() )
Box _pieninX, _pieninY, _suurinX - _pieninX, _suurinY - _pieninY, 0
EndIf
//Mouse2 liikuttaa joukkoja.
If MouseHit( 2 ) Then
_posX = -13 * valittuja / 2
_posY = -13 * valittuja / 2
row = 0
For iu.tUkot = Each tUkot
If iu\cValittu = True Then
If row = valittuja / 2 Then
_posY + 13
_posX = -13 * valittuja / 2
EndIf
row + 1
_posX + 13 * row
iu\cTX = MouseX() + _posX
iu\cTY = MouseY() + _posY
EndIf
Next iu
EndIf
//piirretään ja liikutetaan joukkoja.
For iu.tUkot = Each tUkot
If iu\cValittu = True Then
Color cbGreen
Text iu\cTX, iu\cTY, "A"
Color cbRed
Else
Color cbWhite
EndIf
//liikutetaan ukkoja jotka eivät ole päämäärässään.
If Distance( iu\cX, iu\cY, iu\cTX, iu\cTY ) > iu\cNopeus Then
kulma# = GetAngle( iu\cX, iu\cY, iu\cTX, iu\cTY )
iu\cX = iu\cX + Cos( kulma# ) * iu\cNopeus
iu\cY = iu\cY - Sin( kulma# ) * iu\cNopeus
EndIf
Text iu\cX, iu\cY, "A"
Next iu
DrawScreen
Forever
Re: Apua stragedia peliin
Tällaisen kaivoin jostain koneeni uumenista:
Itse en tiedä kenen tämä on, mutta jos joku tunnistaa tämän omakseen tai kaverin tekemäksi niin saa sanoa...
Code: Select all
SCREEN 600,500
FrameLimit 40
DrawToWorld ON
ukkomaara=4
Dim ukko(ukkomaara)
Dim ukko_valittu(ukkomaara)
Dim ukon_hyökkäys(ukkomaara)
Dim ukon_liikkuminen(ukkomaara)
Global maailmax
Global maailmay
For i=0 To 4
ukko(i)=LoadObject("media/guy.bmp",72)
PositionObject ukko(i), Rand(-30,-150),Rand(-100,100)
ObjectPickable ukko(i),2
Next i
w=1
vihu=LoadObject("media/soldier.bmp",72)
PositionObject vihu, Rand(200,100),Rand(-100,100)
ObjectPickable vihu,2
o=MakeObject()
o2=MakeObject()
o3=MakeObject()
o4=MakeObject()
menomerkki=LoadObject("media/target.bmp",72)
mouse=LoadImage("media/mouse.bmp")
attack=LoadImage("media/ship.bmp")
väri=255
ShowObject menomerkki, ON
PositionObject menomerkki, 99999,99999
'asetetaan äijille keskenään törmäyksentunnistus
SetupCollision ukko(0),ukko(1),2,2,2 : SetupCollision ukko(0),ukko(2),2,2,2 : SetupCollision ukko(0),ukko(3),2,2,2 : SetupCollision ukko(0),ukko(4),2,2,2
SetupCollision ukko(1),ukko(0),2,2,2 : SetupCollision ukko(1),ukko(2),2,2,2 : SetupCollision ukko(1),ukko(3),2,2,2 : SetupCollision ukko(1),ukko(4),2,2,2
SetupCollision ukko(2),ukko(1),2,2,2 : SetupCollision ukko(2),ukko(0),2,2,2 : SetupCollision ukko(2),ukko(3),2,2,2 : SetupCollision ukko(2),ukko(4),2,2,2
SetupCollision ukko(3),ukko(1),2,2,2 : SetupCollision ukko(3),ukko(2),2,2,2 : SetupCollision ukko(3),ukko(0),2,2,2 : SetupCollision ukko(3),ukko(4),2,2,2
SetupCollision ukko(4),ukko(1),2,2,2 : SetupCollision ukko(4),ukko(2),2,2,2 : SetupCollision ukko(4),ukko(3),2,2,2 : SetupCollision ukko(4),ukko(0),2,2,2
Repeat
hiiri()
///////////// Neliövalinta
Color cbwhite
If MouseDown(1) Then
If paikkavalittu=False Then
nelx=MaailmaX
nely=-Maailmay
paikkavalittu=True
EndIf
'pistää neliönkulmat oikeisiin paikkoihin
PositionObject o,nelx,nely
PositionObject o2,maailmax,ObjectY(o)
PositionObject o3,ObjectX(o2),-maailmay
PositionObject o4,ObjectX(o),ObjectY(o3)
'piirtää itte neliön
Line ObjectX(o), ObjectY(o),maailmax,ObjectY(o)
Line ObjectX(o2), ObjectY(o2),ObjectX(o3),ObjectY(o3)
Line ObjectX(o3), ObjectY(o3),ObjectX(o4),ObjectY(o4)
Line ObjectX(o4), ObjectY(o4),ObjectX(o),ObjectY(o)
'jos ei painahiirellä poistaa neliön
ElseIf Not MouseDown(1) Then
nelx=0
nely=0
paikkavalittu=False
EndIf
///////// UKKOJE VALINTA //////////
CameraPick MouseX(),MouseY()
e=PickedObject()
For i=0 To 4
'vasemmasta yläkulmasta
If ObjectX(ukko(i))=>ObjectX(o) And ObjectX(ukko(i))=<ObjectX(o2) And ObjectY(ukko(i))=<ObjectY(o2) And ObjectY(ukko(i))=>ObjectY(o3) Then
If paikkavalittu=False Then
ukko_valittu(i)=True
EndIf
'oikeasta alakulmasta
ElseIf ObjectX(ukko(i))=<ObjectX(o) And ObjectX(ukko(i))=>ObjectX(o2) And ObjectY(ukko(i))=>ObjectY(o2) And ObjectY(ukko(i))=<ObjectY(o3) Then
If paikkavalittu=False Then
ukko_valittu(i)=True
EndIf
'vasemmasta alakulmasta
ElseIf ObjectX(ukko(i))=>ObjectX(o) And ObjectX(ukko(i))=<ObjectX(o2) And ObjectY(ukko(i))=>ObjectY(o2) And ObjectY(ukko(i))=<ObjectY(o3) Then
If paikkavalittu=False Then
ukko_valittu(i)=True
EndIf
'oikeasta yläkulmasta
ElseIf ObjectX(ukko(i))=<ObjectX(o) And ObjectX(ukko(i))=>ObjectX(o2) And ObjectY(ukko(i))=<ObjectY(o2) And ObjectY(ukko(i))=>ObjectY(o3) Then
If paikkavalittu=False Then
ukko_valittu(i)=True
EndIf
'jos painaa ukkoa
ElseIf e=ukko(i) And MouseDown(1) Then
For r=0 To ukkomaara
ukko_valittu®=False
Next r
ukko_valittu(i)=True
EndIf
'tekee ympyrän äijän ympärille
Color 0,255,0
If ukko_valittu(i)=True Then Circle ObjectX(ukko(i))-20,ObjectY(ukko(i))+20, 40,OFF
Next i
////////////////////////////////////7
For i=0 To 4
///// "HYÖKKÄYS" //////
If e=vihu Then
ShowMouse attack
Else
ShowMouse mouse
EndIf
'jos hiiri on vihun päällä ja painaa hiiren oikeeta niin "hyökkää"
If e=vihu And MouseDown(2) Then
'tavallinen liikkuminen pois päältä
For t=0 To ukkomaara
ukon_liikkuminen(t)=0
Next t
PositionObject menomerkki, 99999,9999
If ukko_valittu(i)=1 Then
PointObject ukko(i), vihu
ukon_hyökkäys(i)=ON
EndIf
EndIf
'jos hyökkäys päällä niin liikutaan vihua kohti
If ukon_hyökkäys(i)=ON Then MoveObject ukko(i), 2
If Distance2(ukko(i),vihu)<100 And ukon_hyökkäys(i)=ON Then
'hyökkäys pois päältä kun se on tehty
For w=0 To ukkomaara
ukon_hyökkäys(w)=OFF
Next w
//AMMUNTA
ampuminen=ON
EndIf
If ampuminen=ON Then
Color väri,väri,väri
Text 0,0, "PUM"
väri=väri-1
If väri<1 Then
ampuminen=OFF
ClearText
väri=255
EndIf
EndIf
/////////////////////////////
////////// LIIKKUMINEN
If MouseDown(1) And e=0 Then
For z=0 To ukkomaara
ukko_valittu(z)=0
Next z
EndIf
If MouseDown(2) And e=0 Then
If menopaikka=False Then
menox=MaailmaX
menoy=-Maailmay
'menopaikka=True
PositionObject menomerkki,menox,menoy
EndIf
'ei liikuteta ukkoja joita ei ole valittu
If ukko_valittu(i)=ON Then ukon_liikkuminen(i)=ON
'laitetaan ukko_hyökkäys pois päältä
For u=0 To ukkomaara
ukon_hyökkäys(u)=OFF
Next u
EndIf
'varsinainen liikutus
If ukon_liikkuminen(i)=ON Then
PointObject ukko(i), menomerkki
MoveObject ukko(i),2
EndIf
'jos joku ukoista koskee objectia niin kaikki pysähtyy
For p=0 To ukkomaara
If ObjectsOverlap(ukko(p),menomerkki) Then paikalla=True
Next p
If paikalla=True Then ukon_liikkuminen(i)=False : paikalla=False
Next i
DrawScreen
Forever
'muutetaan ruudun koordinaatit maailman koordinaateiksi
Function hiiri()
hiiriX=MouseX()
hiiriY=MouseY()
MaailmaX = CameraX()-ScreenWidth()/2+hiiriX
MaailmaY = -CameraY()-ScreenHeight()/2+hiiriY
End Function
Re: Apua stragedia peliin
Nyt tuli seuraava ongelma...pitäisi saada sellainen palkki joka ei olisi kartalla ja kuitenkin pelin alakulmassa
-
- Active Member
- Posts: 155
- Joined: Wed Dec 03, 2008 8:17 pm
- Location: Haukipudas
Re: Apua stragedia peliin
käytä pelkkiä kuvia.
kato kuvakomennot.
kato kuvakomennot.
Turmankylä
huonoja pelejä, purkkaisia viritelmiä, tylsiä tarinoita.
huonoja pelejä, purkkaisia viritelmiä, tylsiä tarinoita.
Re: Apua stragedia peliin
DrawGame ?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Apua stragedia peliin
"Piirtää kaikki kartat, objektit ja partikkelit perustuen kameran sijaintiin.Jani wrote:DrawGame ?
Tätä komentoa ei ole pakko kutsua, vaan CoolBasic suorittaa sen automaattisesti ennen kuin ruutu piirretään.
Joskus peli pitää piirtää ennen muita grafiikkakomentoja. Esimerkiksi teksti voi muuten peittyä kartan tai "lattiaobjektin" alle. Käytä tätä komentoa piirtämään peli ennen tekstiä ja muuta grafiikkaa."
Mihin tarvitsen komentoa jos cool basic tekee sen automaattisesti?-.-
Re: Apua stragedia peliin
Laita tekstit laatikot sun muut viimeisenä ja ennen niitä kirjoita DrawGame sitten nuo.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Apua stragedia peliin
DrawToScreen?
DrawToWorld?
DrawToWorld?
Re: Apua stragedia peliin
kuten tuossa lainaamassasi manuaalin pätkässä sanotaan, grafiikkakomennot (kuvat, tekstit, piirtokomennot) menevät kartan ja objektien alle normaalisti. Eli jos ne tahtoo objektien päälle, täytyy laittaa tuo drawgame ennen niiden piirtämistä.alker(vierailijana) wrote:"Piirtää kaikki kartat, objektit ja partikkelit perustuen kameran sijaintiin.Jani wrote:DrawGame ?
Tätä komentoa ei ole pakko kutsua, vaan CoolBasic suorittaa sen automaattisesti ennen kuin ruutu piirretään.
Joskus peli pitää piirtää ennen muita grafiikkakomentoja. Esimerkiksi teksti voi muuten peittyä kartan tai "lattiaobjektin" alle. Käytä tätä komentoa piirtämään peli ennen tekstiä ja muuta grafiikkaa."
Mihin tarvitsen komentoa jos cool basic tekee sen automaattisesti?-.-
EDIT:
En nyt kyllä ihan ymmärtänyt tuota kysymystä, joten en tiedä miten tämä siihen liittyy. Nuo minua ennen olevat vastauksetkin näyttää vähän siltä että porukka vain heittää randomilla komentoja ymmärtämättä kysymyksestä paljoa sen enempää kuin minäkään.
Last edited by TheFish on Tue Dec 30, 2008 8:21 pm, edited 1 time in total.
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Apua stragedia peliin
Hups en lukenut tuota kokonaanalker(vierailijana) wrote:"Piirtää kaikki kartat, objektit ja partikkelit perustuen kameran sijaintiin.Jani wrote:DrawGame ?
Tätä komentoa ei ole pakko kutsua, vaan CoolBasic suorittaa sen automaattisesti ennen kuin ruutu piirretään.
Joskus peli pitää piirtää ennen muita grafiikkakomentoja. Esimerkiksi teksti voi muuten peittyä kartan tai "lattiaobjektin" alle. Käytä tätä komentoa piirtämään peli ennen tekstiä ja muuta grafiikkaa."
Mihin tarvitsen komentoa jos cool basic tekee sen automaattisesti?-.-
Re: Apua stragedia peliin
eli tuollaista alareunassa olevaa palkki olen tekemässä...siihen tulee kaikki talot kun painaa niitä niin saat valita mihin se rakentaa sen jne.
Re: Apua stragedia peliin
Sen alapalkin saa sinne ihan Box komennolla. Ja otit ton kuvan Age of Empires 2:sta, joten en usko että päädyt noin isoon projuun. Minullakin on onglemana tuo talon paikan valinta hiirellä.
Re: Apua stragedia peliin
Tuon tyylisen palkin saat siis tehtyä helposti kuvana. Tässä pitää tosiaan laittaa se drawgame ennen kuvan piirtoa, jos käytät cb:n omaa karttamoottoria. Tosin aoehan käyttää isometrisiä karttoja, joita ei cb:n omalla moottorilla pysty tekemään, eli jos teet myös kartan kuvilla et välttämättä tarvitse drawgamea.
Voisi tietysti viilata pilkkua sen verran, että mainitsen sen olevan strategia, ei stragedia.
Voisi tietysti viilata pilkkua sen verran, että mainitsen sen olevan strategia, ei stragedia.
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Apua stragedia peliin
Sama juttu mulla...se heittää sen talo\obj johonkin helvettiin ainaphons wrote:Sen alapalkin saa sinne ihan Box komennolla. Ja otit ton kuvan Age of Empires 2:sta, joten en usko että päädyt noin isoon projuun. Minullakin on onglemana tuo talon paikan valinta hiirellä.