Tyhmät kysymykset (I/2009)
Re: Tyhmät kysymykset
Miten saan makeimagella tehdyn kuvan jonkun objektin grafiikaksi?
Coolbasic roguelike-projekti menossa 8)
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
Re: Tyhmät kysymykset
PaintObject objekti,-kuva
Re: Tyhmät kysymykset
mikä tässä nyt on?
en keksi mitään ratkaisua
voititvalikon jälkeen se ei näytä noita muita???
en keksi mitään ratkaisua
voititvalikon jälkeen se ei näytä noita muita???
Code: Select all
voititvalikko:
ClearObjects
ClearText
voitit = LoadImage ("voitit.png")
Repeat
DrawImage voitit,0,0
Color cbred
Text 550,600,"PAINA ENTERIÄ"
If KeyHit (cbkeyreturn) Then Goto tekijät
DrawScreen
Forever
////////////////////////////////////////////////////////////////////////
'----------------------------------------------------------------------
tekijät:
ClearObjects
ClearText
Repeat
Color cbred
Text 10,40, "------------------------------------"
Text 30,60, "-----------------------------------------"
Text 30,80, "---------------------------------------"
Text 30,100, "--------------------------------------"
Text 50,800, "PAINA ENTERIÄ "
If KeyHit (cbkeyreturn) Then Goto jatkuu
DrawScreen
Forever
////////////////////////////////////////////////////////////////////////
'---------------------------------------------------------------------
jatkuu:
ClearObjects
ClearText
Repeat
Color cbred
Text 10,40, "--------------------"
Text 10,60, "---------------------------"
Text 10,80, "----------------------------"
Text 10,150,"---------------------------"
Text 40,170,"PAINA ENTERIÄ LOPETTAAKSESI"
If KeyHit (cbkeyreturn) Then End
DrawScreen
Forever
EDIT:
Kiitos
Last edited by rami123 on Tue Dec 23, 2008 7:04 pm, edited 1 time in total.
Re: Tyhmät kysymykset
Laita valikon jälkeen komento ClearKeys, jotta näppäimistäpuskuri tyhjennettäisiin. Nyt Enter-näppäimen painallus jää voimaan ja ohjelman suoritus jatkuu ja jatkuu.rami123 wrote:mikä tässä nyt on?
en keksi mitään ratkaisua
voititvalikon jälkeen se ei näytä noita muita???
Re: Tyhmät kysymykset
miten korjaisin tämän kun vihollinen ilmestyy seinien sisälle niin se tuhotaan?
kokeilin tämmöstä mutta heittää mavia
Code: Select all
////VIHOLLISET////
If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie
newzombi.VIHOLLISET= New(VIHOLLISET)
newzombi\obj=CloneObject(kirvesmies)
ObjectPickable newzombi\obj,1
'Asetetaan vihollinen kohtaan missä ei ole törmäystä
For y=1 To MapWidth()
For x=1 To MapWidth()
If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-1600,1000),Rand(1600,-1000)
Next x
Next y
Code: Select all
If ObjectsOverlap (newzombi\obj,kartta) Then
Delete newzombi
DeleteObject newzombi\obj
EndIf
Re: Tyhmät kysymykset
Ei kannata poistaa seinän sisälle meneviä, vaan mieluummin estää niitä menemästä sinne alunperinkään (kuten näemmä olet jo yrittänyt). nyt pikaisesti paras mieleeni tuleva ratkaisu on loopata kartan läpi ja ottaa kaksiulotteiseen taulukkoon kaikkien ilman törmäystä olevien tilejen koordinaatit. Sitten vain otat niistä randmilla jotkin koordinaatit. Tuossa ratkaisussa on tietysti huonotkin puolensa, kuten se että tarvitaan taulukko ja zombit voivat tulla toistensa päälle. Oletettavasti sen voi tehdä paremminkin, mutta itselleni ei nyt tule mieleen miten.
Jotain tämmöistä siis:
Jotain tämmöistä siis:
Code: Select all
tileLeveys = objectSizeX(kartta) / MapWidth()
tileKorkeus = ObjectSizeY(kartta) / MapHeight()
dim paikat(MapHeight() * MapWidth())(1) //varaan alkuun tilaa kartan kaikille tileille ja pienennän sen myöhemmin
paikkaMaara = 0
for y = 1 to MapHeigth()
for x = 1 to MapWidth()
if GetMap2(2, x, y) = 0 then
paikat(paikkaMaara)(0) = x * tileLeveys
paikat(paikkaMaara)(1) = y * tileKorkeus
paikkaMaara = paikkaMaara + 1
endif
next x
next y
cleararray off
redim paikat(paikkaMaara)(1)
//zombin luomiskohtaan
newzombi.VIHOLLISET = new(VIHOLLISET)
newzombi\obj = cloneobject(kirvesmies)
objectpickable newzombi\obj, 1
paikka = rand(0, paikkaMaara)
positionobject newzombi\obj, paikat(paikka)(0), paikat(paikka)(1)
EDIT:
(tuossa tosin taitaa vielä mennä koordinaatit väärin, koska kartan keskusta on (0,0) koordinaateissa ja tuo olettaa että kartan vasen yläkulma olisi siinä. Korjaantuu sillä että miinustat koordinaateista puolet kartan leveydestä/korkeudesta)
Last edited by TheFish on Wed Dec 24, 2008 12:08 pm, edited 2 times in total.
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Tyhmät kysymykset
DeleteObject ensin, sitten vasta Delete!rami123 wrote:miten korjaisin tämän kun vihollinen ilmestyy seinien sisälle niin se tuhotaan?
kokeilin tämmöstä mutta heittää maviaCode: Select all
////VIHOLLISET//// If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie newzombi.VIHOLLISET= New(VIHOLLISET) newzombi\obj=CloneObject(kirvesmies) ObjectPickable newzombi\obj,1 'Asetetaan vihollinen kohtaan missä ei ole törmäystä For y=1 To MapWidth() For x=1 To MapWidth() If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-1600,1000),Rand(1600,-1000) Next x Next y
Code: Select all
If ObjectsOverlap (newzombi\obj,kartta) Then Delete newzombi DeleteObject newzombi\obj EndIf
Re: Tyhmät kysymykset
Osaisiko Joku Auttaa Tässä Ongelmassa
Tällä Hetkellä Koodi Toimii Muuten oikein, mutta kun tuohon "CheckPointtiin" pitää aina ajaa juuri oikeasta paikasta ja oikeasta kulmasta, jos on pikkasenkin vinossa auto tai auton oikea osa ei osu tuohon pixeliin niin Kierrosta ei ikäänkuin lasketa.
Tällä Hetkellä Koodi Toimii Muuten oikein, mutta kun tuohon "CheckPointtiin" pitää aina ajaa juuri oikeasta paikasta ja oikeasta kulmasta, jos on pikkasenkin vinossa auto tai auton oikea osa ei osu tuohon pixeliin niin Kierrosta ei ikäänkuin lasketa.
Code: Select all
Check = 0
If ObjectY (Auto1)= 590 Then Check +1
If Check = 1 Then Goto Level2
-
- Active Member
- Posts: 170
- Joined: Mon Jun 23, 2008 9:04 pm
Re: Tyhmät kysymykset
Ihan varma en oo mutta eikös ObjectY tarvi tuossa tilanteessa kaverikseen ObjectX:än?
edit: joo en oikein tiä mistä repäsin ton ehdotukseni, oon kai vaan tottunu siihen et objecty ja objectx on melkein aina kimpas:)
edit: joo en oikein tiä mistä repäsin ton ehdotukseni, oon kai vaan tottunu siihen et objecty ja objectx on melkein aina kimpas:)
Last edited by KankiKalle on Wed Dec 24, 2008 12:01 am, edited 1 time in total.
Väsyttää niin ettei jaksa edes mennä lepäämään.
Re: Tyhmät kysymykset
Tee sinne MakeObject():lla objecti pistä se siihen haluamaasi kohtaan missä on se checkpoint(mikä lienee) ja sitten If ObjectsOverLap(auto?,point). Menee vähän helpommin...
Re: Tyhmät kysymykset
KankiKalle wrote:Ihan varma en oo mutta eikös ObjectY tarvi tuossa tilanteessa kaverikseen ObjectX:än?
Code: Select all
Check = 0
If ObjectY (Auto1)= 590 Then Check +1
If ObjectX (Auto1)= 14 Then Check +1
If Check = 2 Then Goto Level2
Joo kokeilen tuota Kiitos.phons as guest wrote:Tee sinne MakeObject():lla objecti pistä se siihen haluamaasi kohtaan missä on se checkpoint(mikä lienee) ja sitten If ObjectsOverLap(auto?,point). Menee vähän helpommin...
Re: Tyhmät kysymykset
Ongelmana on se, että katsot, onko Auto1 juuri tietyn pikselin päällä. Tämä korjautuu, jos tutkitaan onko Auto1 lähellä Checkpointtia.Vald0 wrote:KankiKalle wrote:Ihan varma en oo mutta eikös ObjectY tarvi tuossa tilanteessa kaverikseen ObjectX:än?Ai näin ikään? Sama Ongelma mutta nyt se ei toimi edes sitä vähää Minkä se äsken toimi. Mutta kiitos kumminkin.Code: Select all
Check = 0 If ObjectY (Auto1)= 590 Then Check +1 If ObjectX (Auto1)= 14 Then Check +1 If Check = 2 Then Goto Level2
Joo kokeilen tuota Kiitos.phons as guest wrote:Tee sinne MakeObject():lla objecti pistä se siihen haluamaasi kohtaan missä on se checkpoint(mikä lienee) ja sitten If ObjectsOverLap(auto?,point). Menee vähän helpommin...
Code: Select all
'Tarkastetaan, onko Auto1 15 pikselin päässä checkpointista, muuta lukua 15 isommaksi jos tämä ei riitä
If Distance(ObjectX (Auto1), ObjectY (Auto1), 14, 590) < 15 Then Check +1
Taulukon kanssa, oletan että tiedät taulukoiden perusteet:
Code: Select all
'Tehdään 5 checkpointtia(0,1,2,3 ja 4) sekä niiden koordinaatit, tässä tapauksessa x on 0. koordinaatti ja y on 1. koordinaatti.
'Tämä tulee koodin alkuun
Dim CheckPoint(4,1)
CheckPoint(0,0) = 590 'Ensimmäisen checkpointin X sijainti
CheckPoint(0,1) = 14 'Ensimmäisen checkpointin Y sijainti
CheckPoint(1,0) = 650 'Toisen checkpointin X sijainti
CheckPoint(1,1) = 50 'Toisen checkpointin Y sijainti
'Jatka samanlailla loppujen checkpointtien kanssa
...koodia...
'Nollataan checkpointit, tämä tulee aina kun uusi kenttä ladataan:
Check = 0
...koodia...
'Tarkistetaan, ollaanko oikean checkpointin kohdalla. Muuttuja Check ilmaisee, minkä checkpointin kohdalla ollaan
'Pääsilmukkaan
If Distance(ObjectX (Auto1), ObjectY (Auto1), CheckPoint(Check,0), CheckPoint(Check,1)) < 15 Then Check +1
Re: Tyhmät kysymykset
Kiitos, Luulen Että tuo auttoi paljon, kunhan kerkeän kokeilemaan.axu wrote:Ongelma on...
Re: Tyhmät kysymykset
Onko Coolbasicillä mahdollista ohjata USB-portteja?
Onko kukaan tehnyt jotain DLL:ää, jolla tämä olisi mahdollista?
(Luulen, että kukaan ei ole vielä tehnyt DLLää tuohon tarkoitukseen Coolbasicille)
Yrittäisin askelmoottoria saada liikkeelle, mutta taidan joutua ohjelmoimaan C++:lla sen ohjauksen.
Onko kukaan tehnyt jotain DLL:ää, jolla tämä olisi mahdollista?
(Luulen, että kukaan ei ole vielä tehnyt DLLää tuohon tarkoitukseen Coolbasicille)
Yrittäisin askelmoottoria saada liikkeelle, mutta taidan joutua ohjelmoimaan C++:lla sen ohjauksen.
Tekeillä pikkupelejä ja ohjelmia
-
- Tech Developer
- Posts: 545
- Joined: Sun Aug 26, 2007 2:43 pm
- Location: Liminka
Re: Tyhmät kysymykset
Eipä nuita vielä taida olla. Tekemisen ei kyllä pitäisi olla ylitsepääsemättömän vaikeaa.Jonhu wrote:Onko Coolbasicillä mahdollista ohjata USB-portteja?
Onko kukaan tehnyt jotain DLL:ää, jolla tämä olisi mahdollista?
(Luulen, että kukaan ei ole vielä tehnyt DLLää tuohon tarkoitukseen Coolbasicille)
Yrittäisin askelmoottoria saada liikkeelle, mutta taidan joutua ohjelmoimaan C++:lla sen ohjauksen.
CoolBasic henkilökuntaa
Kehittäjä
cbFUN Kello
cbSDL
Whale.dy.fi
<@cce> miltäs tuntuu olla suomen paras
Kehittäjä
cbFUN Kello
cbSDL
Whale.dy.fi
<@cce> miltäs tuntuu olla suomen paras
Re: Tyhmät kysymykset
Riippuu mitä tarkoitat USB porttien ohjauksella. USB tikulta lukeminen käy jos tiedetään mikä kirjaintunnus sillä on(yleensä E ->,riippuen levyasemista).Jonhu wrote:Onko Coolbasicillä mahdollista ohjata USB-portteja?
Onko kukaan tehnyt jotain DLL:ää, jolla tämä olisi mahdollista?
Tuommotteella pitäisi löytyä kaikki asemat.
Code: Select all
'Käydään mahdolliset kiintolevyt, levyasemat ja USB tikut ym. läpi
For Directory=Asc("A") To Asc("W")
If FileExists(Chr(Directory)+":/") Then Print "Drive found: "+Chr(Directory)+":/"
Next Directory
WaitKey
Re: Tyhmät kysymykset
Taitaapi olla koko cb foorumeiden aktiivisin topick
Sekä minun, että muiden osalta.
Nyt on 99 riviä pitkä lentelypelin lähdekoodi. Ongelmaksi ilmestyi taas tuo "Memory acces violation". Alla on lähdekoodi kokonaisuudessaan. Ongelma ilmeni sen jälkeen, kun lisäsin Type ammus field obj end typen, ja kaikki asteroidikloonitsydeemit.
Kiitokset jo etukäteen!
Sekä minun, että muiden osalta.
Nyt on 99 riviä pitkä lentelypelin lähdekoodi. Ongelmaksi ilmestyi taas tuo "Memory acces violation". Alla on lähdekoodi kokonaisuudessaan. Ongelma ilmeni sen jälkeen, kun lisäsin Type ammus field obj end typen, ja kaikki asteroidikloonitsydeemit.
Code: Select all
'Alkuvalmistelut
SCREEN 400, 300
FrameLimit 30
'Ns. menu
Text 100,120, "Paina ENTER aloittaaksesi"
Text 10,10, "Avaruuslentelypeli alpha"
Text 10,280, "(c) Veikko 'Wee' Vauhkonen 2008"
DrawScreen
WaitKey
ClearText
'Objecktien & kentän valmistelut
Type AMMUS 'luo kokoelma, jonka nimi on AMMUS
Field obj 'yksi kenttä nimeltään 'obj'
End Type
Type ASTEROIDIT'Kokoelma asteroidi
Field obj'yksi kenttä nimeltään 'obj'
End Type
ClsColor CbGreen
pikkukivi = LoadImage("pikkukivi.png")
puska = LoadImage("puska.png")
alus = LoadObject("ship.png", 36)
pati = LoadObject("pati.png", 36)
asteroidi = LoadObject("asteroidi.png")
ShowObject pati,OFF
TurnObject alus, 90
PositionObject alus, -160, 30
'Itse pelisilmukka
Repeat
'Asteroidit...'
newAsteroidi.ASTEROIDIT= New(ASTEROIDIT)
newAsteroidi\obj=CloneObject(asteroidi)
CloneObjectPosition newAsteroidi\obj -200,Rand(40,250)
CloneObjectOrientation newAsteroidi\obj,180
MoveObject newAsteroidi\obj,2
'Päivitetään asteroidit
a=0
For aAsteroidi.ASTEROIDIT= Each ASTEROIDIT
MoveObject aAsteroidi\obj,2
If ObjectX(aAsteroidi\obj)> -200 Then
DeleteObject aAsteroidi\obj
Delete aAsteroidi
EndIf
a=a+1
Next aAsteroidi
'Kentän taustakuvat & muu tilpehööri
DrawImage puska,100,95
DrawImage pikkukivi,110,97
DrawImage pikkukivi,230,169
DrawImage puska,140,300
'Tekstinsyötötökokeilut ylös, ja alaspäin vas. ylänurkka
If UpKey() Then
ClearText
Text 2,2, "Painat nuolta ylöspäin"
EndIf
If DownKey() Then
ClearText
Text 2,2, "Painat nuolta alaspäin"
EndIf
'Päiväys alareunaan
Text 1,280, "Tänään on"
Text 80,280,Date()
Text 177,280,Time()
'FPS oikeaan alareunaan
Text 340,280, "FPS:"
Text 370,280,FPS()
'Piirretään ylä-ja alaviivat kentälle
Line 0,26,400,26
Line 0,260,400,260
'Aluksen liikkuminen
If UpKey() Then MoveObject alus, 2
If DownKey() Then MoveObject alus, -2
'Aluksen pelikentän rajaaminen
If ObjectX(alus)>200 Then PositionObject alus, 200,ObjectY(alus)
If ObjectX(alus)<-200 Then PositionObject alus, -200,ObjectY(alus)
If ObjectY(alus)>115 Then PositionObject alus, ObjectX(alus),115
If ObjectY(alus)<-100 Then PositionObject alus, ObjectX(alus),-100
'Ampuminen oikealle
If KeyDown(cbkeyspace) And aselataus=0 Then
luoti.AMMUS = New(AMMUS)
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,alus
aselataus=10
EndIf
If aselataus>0 Then aselataus=aselataus-1
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
If ObjectX(luoti\obj)<-180 Or ObjectX(luoti\obj)>180 Or ObjectY(luoti\obj)<-130 Or ObjectY(luoti\obj)>130 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Next luoti
'Se unohtumaton
DrawScreen
Forever
Re: Tyhmät kysymykset
Miksi sulla on:
Vaikka molemmissa on toinen parametri objekti.
Code: Select all
CloneObjectPosition newAsteroidi\obj -200,Rand(40,250)
CloneObjectOrientation newAsteroidi\obj,180
Re: Tyhmät kysymykset
Miten se pitäisi laittaa, jotta se olisi toimiva? Ei ollut oikein esimerkkiä, jos kloonia ei tahdo laittaa jonkin toisen objecktin kohdalle. Miten korjaan? Viitsisitkö selittää niin, että voisin siitä jotain oppiakkin
Yritin seuraavaa:
Yritin seuraavaa:
Code: Select all
CloneObjectPosition newAsteroidi -200,Rand(40,250)
CloneObjectOrientation newAsteroidi, 180
"This city looks so pretty, do you wanna burn here with me..."
Re: Tyhmät kysymykset
Jos et tahdo sitä toisen objektin kohdalle, käytä positionobject-komentoa.Wee wrote:Miten se pitäisi laittaa, jotta se olisi toimiva? Ei ollut oikein esimerkkiä, jos kloonia ei tahdo laittaa jonkin toisen objecktin kohdalle. Miten korjaan? Yritin
Code: Select all
CloneObjectPosition newAsteroidi -200,Rand(40,250) CloneObjectOrientation newAsteroidi, 180
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä