Tyhmät kysymykset (I/2009)
Re: Tyhmät kysymykset
Miten saan suoritettua tiedostosta luetun komennon?
Tai voisiko joku tehdä semmosen?
Tai voisiko joku tehdä semmosen?
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: Tyhmät kysymykset
Parseroimalla tekstitiedostosta sen komennon ja sitten suorittamalla sen, duh.
Re: Tyhmät kysymykset
Siis tuon kyllä tiedän.
Minulla on katsos niin että niitä komentoja voi lisätä sinne tekstitedostton...
Esim.
Ja sitten lisää sinne uuden rivin ja kääntäjän pitäisi osata suorittaa se...
Minulla on katsos niin että niitä komentoja voi lisätä sinne tekstitedostton...
Esim.
Code: Select all
***komennot.txt***
OpenToEdit
WriteByte
CloseFile
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: Tyhmät kysymykset
Nyt tuli ongelma. Mielestäni ohjelman pitäisi toimia edes jotenkin, mutta ruudulla näkyy vain mustaa. Jutut on vielä keskeneräisiä siellä ja se ei ole läheskään sellainen kun pitäisi, mutta kai edes jotain pitäisi näkyäkin?
Niin asia on nyt korjattu. Seuraava kysymys:
Nyt kun laitan For...Next-looppiin koodin
niin kaikki toimii niin kuin pitääkin. Mutta entäs sitten jos pitäisi tuhota tuo objekti iVihu\obj, kun siihen törmää jokin ammuksista (iAmmus\obj), niin miten sen teen?
EDIT: nyt mavittaa tämmöinen koodi:
Niin asia on nyt korjattu. Seuraava kysymys:
Nyt kun laitan For...Next-looppiin koodin
Code: Select all
If ObjectsOverlap (iVihu\obj, heebo) Then
Health = Health-1
If Health = 0 Then MakeError "Oudot hihhulit tappoivat sinut!"
EndIf
EDIT: nyt mavittaa tämmöinen koodi:
Code: Select all
Type VIHUT
Field obj
EndType
Type AMMUKSET
Field obj
EndType
FrameLimit 40
vihu=LoadObject("Media\guy.bmp", 72)
ShowObject vihu,OFF
ammus=LoadObject("media\bullet.bmp")
ShowObject ammus,OFF
heebo=LoadObject("media\soldier.bmp", 72)
AddText "Nuolista kääntyypi, Space ampuu!"
Konekivaarintehot=1 'vielä aavistuksen turha
Kills=0 'kuin myös
Health=2000
Repeat
'Update Tuning
If LeftKey() Then TurnObject heebo,5
If RightKey() Then TurnObject heebo,-5
If UpKey() Then MoveObject heebo, 3
If DownKey() Then MoveObject heebo, -2
If KeyDown(cbkeyspace) And reload < 1 Then
uusAmmus.AMMUKSET= New(AMMUKSET)
uusAmmus\obj=CloneObject(ammus)
CloneObjectPosition uusAmmus\obj, heebo
CloneObjectOrientation uusAmmus\obj, heebo
MoveObject uusAmmus\obj, 24
reload=8
EndIf
If vihutimer = 0 Then
uusVihu.VIHUT= New(VIHUT)
uusVihu\obj=CloneObject(vihu)
PositionObject uusVihu\obj, Rnd (0,640), Rnd(0,480)
vihutimer = 15
EndIf
'Update bullwts
For iAmmus.AMMUKSET= Each AMMUKSET
MoveObject iAmmus\obj,6
i=i+1
Next iAmmus
'Update vihulliset
For iVihu.VIHUT= Each VIHUT ' update vihullaiset
PointObject iVihu\obj, heebo
MoveObject iVihu\obj, 2
If ObjectsOverlap (iVihu\obj, heebo) Then
Health = Health-1
If Health = 0 Then MakeError "Oudot hihhulit tappoivat sinut!"
EndIf
If ObjectsOverlap (iVihu\obj, iAmmus\obj) Then
DeleteObject iAmmus\obj
DeleteObject iVihu\obj
EndIf
Next iVihu
For iVihu.VIHUT = Each VIHUT
For iAmmus.AMMUKSET = Each Ammukset
If ObjectsOverlap(iVihu,iAmmus) Then
DeleteObject iVihu\obj
DeleteObject iAmmus\obj
Delete iVihu
Delete iAmmus
EndIf
Next iAmmus
Next iVihu
If reload>0 Then reload=reload-Konekivaarintehot
If vihutimer>0 Then vihutimer=vihutimer-1
DrawScreen
Forever
Last edited by Awaclus on Fri Jan 09, 2009 9:45 pm, edited 2 times in total.
Re: Tyhmät kysymykset
Viilataan pilkkua: Coolbasicilla ei voi tehdä kääntäjää, tulkin korkeintaan. Kääntäjä ehkä DLL:llä mutta se kai oli kiellettyä Zeron mukaan (ainakin jos on samat komennot kuin CB:ssä)Jani wrote:Ja sitten lisää sinne uuden rivin ja kääntäjän pitäisi osata suorittaa se...
Mutta, et pysty tekemään tuollaista vain tostanoin. Sun pitää koodata myös niille komennoille se funktio jonka ne suorittaa. Eihän siinä olisi mitään järkeä että sanot "Suklaapatukka" ja kädessäsi on sellainen. Tuo on vähän sama asia mitä yrität tehdä. Luoda tyhjää tyhjään.
Ja vielä tarkennetaan myös ettei CB:ssä ole PHP:n eval funktion vastaavaa versiota.
Re: Tyhmät kysymykset
Onko tämmöinen mahdollista?:
Tein txt:n jossa luki:
Onko jotenkin mahdollista suorittaa tuo End tuosta muuten kuin näin:
?
EDIT: sain ratkaistua mutta nyt tuli toinen onglema:
Kun tekstitiedostossa lukee:
Eli kun CoolBasicillä kirjoittaa tuohon lisää, niin se uusi teksti tulisi tuon EndSelect tekstin tilalle?
EDIT: Kaikki hoidettu
Tein txt:n jossa luki:
Code: Select all
exit: End
Code: Select all
...koodia
select {komento}
case "End"
End
endselect
EDIT: sain ratkaistua mutta nyt tuli toinen onglema:
Kun tekstitiedostossa lukee:
Code: Select all
Select joku
Case 5
jotain
EndSelect
EDIT: Kaikki hoidettu
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: Tyhmät kysymykset
Minä taas...
Onko mahdollista laittaa laatikko vinoon?
Jos ei, niin voisiko joku tehdä semmoisen funktion?
Onko mahdollista laittaa laatikko vinoon?
Jos ei, niin voisiko joku tehdä semmoisen funktion?
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: Tyhmät kysymykset
On mahdollista tehdä tekemällä ensin funktioon kuvan teko sitä varten ja sitten se samainen funktio myös piirtää sen ensin oikeeseen kulmaan käännettynä. Äläkä nytte ruikuta täällä joka koodin pätkää mitä tarvitset. Ei niitä täällä kaikkia anneta, et sinä muuten mitään itsekään opi jos et tee itse mitään.
Vinkki: Kääntämistä ei pysty tekemään reaaliaikaisesti, jotenka kuva kannattaa tallentaa globaaliin muuttujaan tai taulukkoon tai sitten pistää funktio palauttamaan kuva.
Vinkki: Kääntämistä ei pysty tekemään reaaliaikaisesti, jotenka kuva kannattaa tallentaa globaaliin muuttujaan tai taulukkoon tai sitten pistää funktio palauttamaan kuva.
- -Z-
- Devoted Member
- Posts: 682
- Joined: Tue Aug 28, 2007 3:33 pm
- Location: In ur danmaku, grazin ur bullets
Re: Tyhmät kysymykset
Tästä saat tällaisen täyttämättömän neliön. Ei ollut mitään tekemistä niin koodasin nopsasti.Jani wrote:Minä taas...
Onko mahdollista laittaa laatikko vinoon?
Jos ei, niin voisiko joku tehdä semmoisen funktion?
Code: Select all
Repeat
i#+1
RotBox(200,150,20,i)
DrawScreen
Forever
Function RotBox(XPosition,YPosition,Range,angle)
Line XPosition+Sin(angle)*Range, YPosition+Cos(angle)*Range,XPosition+Sin(WrapAngle(angle)-90)*Range, YPosition+Cos(WrapAngle(angle)-90)*Range
Line XPosition+Sin(WrapAngle(angle)-90)*Range, YPosition+Cos(WrapAngle(angle)-90)*Range,XPosition+Sin(WrapAngle(angle)-180)*Range, YPosition+Cos(WrapAngle(angle)-180)*Range
Line XPosition+Sin(WrapAngle(angle)-180)*Range, YPosition+Cos(WrapAngle(angle)-180)*Range,XPosition+Sin(WrapAngle(angle)+90)*Range, YPosition+Cos(WrapAngle(angle)+90)*Range
Line XPosition+Sin(WrapAngle(angle)+90)*Range, YPosition+Cos(WrapAngle(angle)+90)*Range,XPosition+Sin(angle)*Range, YPosition+Cos(angle)*Range
End Function
"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: Tyhmät kysymykset
MAV tulee siitä kun yrität tarkistaa ammuksen osumisen viholliseen käymättä ammuksia läpi. Toinen MAV tulee kun poistat vihun, mutta yrität vielä tarkistaa muiden ammusten osumisen samaan vihuun.
Code: Select all
Type VIHUT
Field obj
EndType
Type AMMUKSET
Field obj
EndType
FrameLimit 40
vihu=LoadObject("Media\guy.bmp", 72)
ShowObject vihu,OFF
ammus=LoadObject("media\bullet.bmp")
ShowObject ammus,OFF
heebo=LoadObject("media\soldier.bmp", 72)
AddText "Nuolista kääntyypi, Space ampuu!"
Konekivaarintehot=1 'vielä aavistuksen turha
Kills=0 'kuin myös
Health=2000
Repeat
'Update Tuning
If LeftKey() Then TurnObject heebo,5
If RightKey() Then TurnObject heebo,-5
If UpKey() Then MoveObject heebo, 3
If DownKey() Then MoveObject heebo, -2
If KeyDown(cbkeyspace) And reload < 1 Then
uusAmmus.AMMUKSET= New(AMMUKSET)
uusAmmus\obj=CloneObject(ammus)
CloneObjectPosition uusAmmus\obj, heebo
CloneObjectOrientation uusAmmus\obj, heebo
MoveObject uusAmmus\obj, 24
reload=8
EndIf
If vihutimer = 0 Then
uusVihu.VIHUT= New(VIHUT)
uusVihu\obj=CloneObject(vihu)
PositionObject uusVihu\obj, Rnd (0,640), Rnd(0,480)
vihutimer = 15
EndIf
'Update bullwts
For iAmmus.AMMUKSET= Each AMMUKSET
MoveObject iAmmus\obj,6
i=i+1
Next iAmmus
'Update vihulliset
For iVihu.VIHUT= Each VIHUT ' update vihullaiset
PointObject iVihu\obj, heebo
MoveObject iVihu\obj, 2
If ObjectsOverlap (iVihu\obj, heebo) Then
Health = Health-1
If Health = 0 Then MakeError "Oudot hihhulit tappoivat sinut!"
EndIf
Next iVihu
For iVihu.VIHUT = Each VIHUT
tuhoa=OFF
For iAmmus.AMMUKSET = Each Ammukset
If ObjectsOverlap(iVihu\obj,iAmmus\obj) Then
DeleteObject iAmmus\obj
Delete iAmmus
tuhoa=ON
EndIf
Next iAmmus
If tuhoa Then
Delete iVihu
DeleteObject iVihu\obj
EndIf
Next iVihu
If reload>0 Then reload=reload-Konekivaarintehot
If vihutimer>0 Then vihutimer=vihutimer-1
DrawScreen
Forever
Quidquid latine dictum sit, altum videtur.
Voitot: Viikkokisa XVII
Voitot: Viikkokisa XVII
Re: Tyhmät kysymykset
EDIT:
Miksi viesti tuli kahdesti?
Last edited by E.T. on Sat Jan 10, 2009 4:39 pm, edited 1 time in total.
Quidquid latine dictum sit, altum videtur.
Voitot: Viikkokisa XVII
Voitot: Viikkokisa XVII
Re: Tyhmät kysymykset
Code: Select all
Dim AMMUS_ELOSSA(100)
Dim AMMUS_OBJ(100)
FrameLimit 40
Color cbOrange
Box 20,20,360,260,OFF
mappi=LoadObject ("Media\level.bmp")
ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
AddText "Nuolista ohjaa, CTRL=ampuu"
Repeat
Dim botit(8, 4)
botteja = 8
Const masterbotti = 0
Const objekti = 0
Const energia = 1
Const hengissä = 2
Const ampuuko = 3
Const reload_botti = 4
botit(masterbotti, objekti) = LoadObject("soldier.bmp", 360)
ShowObject botit(masterbotti, objekti), OFF
For kloonattava = 1 To 8
botit(kloonattava, objekti) = CloneObject(botit(masterbotti, objekti))
botit(kloonattava, energia) = Rand(10, 20)
botit(kloonattava, hengissä) = 1
botit(kloonattava, ampuuko) = 1
botit(kloonattava, reload_botti) = 0
Next kloonattava
PositionObject botit(1, objekti), -465,865
PositionObject botit(2, objekti), 110,1120
PositionObject botit(3, objekti), -50,1120
PositionObject botit(4, objekti), 465,865
PositionObject botit(5, objekti), 465,705
PositionObject botit(6, objekti), 400,130
PositionObject botit(7, objekti), 400,480
PositionObject botit(8, objekti), 400,-130
dead_master = LoadObject("dead.bmp")
ShowObject dead_master, OFF
Dim dead_tekstuurit(7)
For kloonattava = 0 To 7
dead_tekstuurit(kloonattava) = CloneObject(dead_master)
ShowObject dead_tekstuurit(kloonattava), OFF
Next kloonattava
'Ohjaa ukkoa NUOLILLA
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
If KeyDown(cbKeyRControl) And reload=0 Then
Gosub LisääAmmus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reload-1
GoSub PäivitäAmmukset
DrawGame
If KeyDown(cbKeyRControl) And reload=0 Then
Gosub LisääAmmus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reload-1
CloneCameraPosition ukko
DrawGame
Gosub PäivitäAmmukset
DrawScreen
Until EscapeKey()
End
'----------------------------------------------
LisääAmmus:
For i=1 To 100
If AMMUS_ELOSSA(i)=OFF Then
AMMUS_ELOSSA(i)=ON
AMMUS_OBJ(i)=CloneObject(pati)
CloneObjectPosition AMMUS_OBJ(i),ukko
CloneObjectOrientation AMMUS_OBJ(i),ukko
reload=5
'
Exit
EndIf
Next i
Return
'-----------------------------------------------
PäivitäAmmukset:
For i=1 To 100
If AMMUS_ELOSSA(i) Then
MoveObject AMMUS_OBJ(i),6
'ammus ylittää rajan -> tuhoa se
'vapauta paikka tyhjäksi
AMMUS_ELOSSA(i)=OFF
EndIf
Next i
Return 'palaa takaisin pääsilmukkaan
Re: Tyhmät kysymykset
Ensimmäiset lataukset onnistuvat, mutta sitten yrität ladata botin median sijaan siitä kansiosta, jossa ohjelma on.
pitäisi olla
Sama juttu dead.bmp :n kanssa.
Lisäksi pyöritystä ei yleensä kannata laittaa joka suuntaan vaan mielummin vaikka viiden asteen välein
Code: Select all
botit(masterbotti, objekti) = LoadObject("soldier.bmp", 360)
Code: Select all
botit(masterbotti, objekti) = LoadObject("Media\soldier.bmp", 360)
Lisäksi pyöritystä ei yleensä kannata laittaa joka suuntaan vaan mielummin vaikka viiden asteen välein
Quidquid latine dictum sit, altum videtur.
Voitot: Viikkokisa XVII
Voitot: Viikkokisa XVII
Re: Tyhmät kysymykset
voiko coolbasicilla tehdä ohjelman joka tarkistaa vaikka joka toinen minuutti että onko jokin tietty ohjelma päällä, ja jos ei ole niin se käynnistäisi sen?
Re: Tyhmät kysymykset
Ei ilman DLL:iä. Coolbasic kun on tehty pelien tekoon niin sen takia se ei sisällä kovin monipuolisia mahdollisuuksia tehdä mitään hyötyohjelmia.
Re: Tyhmät kysymykset
Yksi tapa tuli mieleen jos ohjaisi tasklist.exen tulosteen tiedostoon ja lukisi sitä.
EDIT. Jos ei suoraan cb:n execute:lla saa kutsuttua "tasklist.exe > tiedosto" niin tekee sitten vaikka bat filun tätä varten. Tosin DLL olisi siistein vaihtoehto.
EDIT. Jos ei suoraan cb:n execute:lla saa kutsuttua "tasklist.exe > tiedosto" niin tekee sitten vaikka bat filun tätä varten. Tosin DLL olisi siistein vaihtoehto.
Re: Tyhmät kysymykset
Miksi tämä ei tarkista osumista pikselin tarkasti?
Code: Select all
SCREEN 800,600
car = LoadObject("Media\car2.bmp",90)
guy = LoadObject("Media\pacman.bmp")
'guy = LoadObject("Media\car.bmp")
PositionObject car,100,100
Const MoveSpeed=4
Const TurnSpeed=2
Repeat
MoveObject car,(KeyDown(cbkeyW)+UpKey())*MoveSpeed-(KeyDown(cbkeyS)+DownKey())*MoveSpeed
TurnObject car,(KeyDown(cbkeyA)-RightKey())*TurnSpeed-(KeyDown(cbkeyD)-LeftKey())*TurnSpeed
osuu=HitPossible(car,guy,400)
DrawGame
If osuu>0 Then Text 10,30,"Osuu" Else Text 10,30,"Ei osu"
Text 10,10,"FPS: "+FPS()
Text 10,50,"Etäisyys: "+osuu
Text 10,100,"pix: "+GetPixel(MouseX(),MouseY())
DrawScreen
Forever
Function HitPossible(obj1,obj2,MaxDistance)
SX1#=ObjectSizeX(obj2)/2
SY1#=ObjectSizeY(obj2)/2
x1#=ObjectX(obj1)+ScreenWidth()/2
y1#=-ObjectY(obj1)+ScreenHeight()/2
x2#=ObjectX(obj2)+ScreenWidth()/2
y2#=-ObjectY(obj2)+ScreenHeight()/2
angle1#=ObjectAngle(obj1)
'Lock SCREEN()
For a=0 To MaxDistance-1
CX#=x1#+Cos(angle1#)*a
CY#=y1#-Sin(angle1#)*a
If CY#<=SY1#+y2# And CY#>=-SY1#+y2# And CX#<=x2#+SX1# And CX#>=x2#-SX1# Then 'laatikko tarkastus
If GetPixel(cx,cy) <> -16777216 Then Return a ' väri tarkistus
EndIf
Dot cx#,cy#
Next a
'Unlock
EndFunction
Last edited by Jonhu on Wed Jan 14, 2009 3:02 pm, edited 1 time in total.
Tekeillä pikkupelejä ja ohjelmia
Re: Tyhmät kysymykset
Mikset käytä ObjectsOverlapia? Tuo on vaikka kuinka paljon vaikeammin tehty kun sillä se onnistuisi seuraavasti:
Code: Select all
If ObjectsOverlap(object1, object2, 3) Then Print "Zomgz! Pikselintarkka törmäys!"
Re: Tyhmät kysymykset
Menee vähän säädoksi ainakin minun mielestäni, jos joudut testailemaan useaa pistettä tuolla tavalla. Ideana on, että tuo functio kertoo osuuko objekti, jos jatkaa samaan suuntaan liikettä.. Laatikkokosketuksella toimii ihan hyvin, mutta tuo pikselintarkka ei toimi.temu92 wrote:Mikset käytä ObjectsOverlapia? Tuo on vaikka kuinka paljon vaikeammin tehty kun sillä se onnistuisi seuraavasti:
Code: Select all
If ObjectsOverlap(object1, object2, 3) Then Print "Zomgz! Pikselintarkka törmäys!"
Tekeillä pikkupelejä ja ohjelmia
Re: Tyhmät kysymykset
Jaa tuollaista yrität. Jos käytät objektien omia kulmia, voit tarkistaa mahdolliset tulevat törmäykset käytämällä PickObject:ia. En muista nyt juuri sen tarkkoja ominaisuuksia (eli saiko pikselintarkkana).