Kyseessä on kuitenkin Windows XP eikä siinä ole mitään hienoja suojausasetuksia sisäänrakennettuna. Jokin Windowsin ulkopuolinen ohjelma siis aiheuttaa CoolBasicin toimimattomuuden LeeMeisterillä.Wingman wrote:Itselläni ei win7 anna kaikkien ohjelmien lukea program files -kansiosta, joten asensin cb.n johonkin muualle, ja se auttoi
Tyhmät kysymykset (I/2011)
Re: Tyhmät kysymykset (I/2011)
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Tyhmät kysymykset (I/2011)
Tietääkö kukaan kuinka voisin muuttaa hiiren koordinaatit tilekartan koordinaateiksi?
Re: Tyhmät kysymykset (I/2011)
cbSDK:sta löytyy funktiot sitä varten:Minecrafter wrote:Tietääkö kukaan kuinka voisin muuttaa hiiren koordinaatit tilekartan koordinaateiksi?
Code: Select all
//================================================================================
// Selvitetään maailmankoordinaattien mukainen tilen x-paikka.
// Parametrit:
// _x - X-koordinatti pikseleinä.
//================================================================================
Function GetTileX(_x)
mapX# = (ObjectSizeX(NYKYINEN_KARTTA) / 2.0) - ObjectX(NYKYINEN_KARTTA)
Return RoundUp((_x + mapX) / TILEN_LEVEYS)
EndFunction
//================================================================================
// Selvitetään maailmankoordinaattien mukainen tilen y-paikka
// Parametrit:
// _y - Y-koordinatti pikseleinä.
//================================================================================
Function GetTileY(_y)
mapY# = ObjectY(NYKYINEN_KARTTA) + (ObjectSizeY(NYKYINEN_KARTTA) / 2.0)
Return RoundUp((mapY - _y) / TILEN_KORKEUS)
EndFunction
Käytä siis yllä olevaa funktiota näin:
Code: Select all
tileX = GetTileX( MouseWX() ) // X-tilekoordinaatti hiiren alla
tileY = GetTileY( MouseWY() ) // Y-tilekoordinaatti hiiren alla
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
-
- Devoted Member
- Posts: 718
- Joined: Wed Nov 03, 2010 7:56 pm
- Location: Joku piste pohjoisessa.
Re: Tyhmät kysymykset (I/2011)
Aivoni eivät kerta kaikkiaan pysty käsittämään tätä. Miksi tuo mavaa? Kokeilin vielä Addtext-komennolla, ja tuo Updatespace varmaan aiheuttaa sen, mutta miksi?
Code: Select all
Include "sdk/include/cbGravitationPhysics.cb"
SCREEN 800,600
DrawScreen
Type PISTEET
Field obj
End Type
piste = LoadObject("SDK/media/dot.bmp")
For i=1 To 100
pis.PISTEET = New (PISTEET)
pis\obj=CloneObject (piste)
PositionObject pis\obj,Rand(-200,200),Rand(-200,200)
ObjectFloat pis\obj,1
Text 0,0,i
DrawScreen
Next i
Repeat
UpdateSpace()
DrawScreen
Forever
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Re: Tyhmät kysymykset (I/2011)
UpdateSpace-funktio on aika buginen. Se käyttää hyväksi CB:n sisäistä objektisysteemiä, jossa jokaiselle objektille annetaan muuttujaan arvo, joka juoksee ykkösestä eteenpäin. Jostain syystä tyypin jäsenissä olevat objektit kuitenkin saavat suurempia arvoja (itse huomasin arvojen alkavan kolmosesta ja jatkuvan siitä tasaisesti eteenpäin) niin yrittää UpdateSpace-funktio käyttää olemattomia objekteja -> MAV.naputtelija wrote:Aivoni eivät kerta kaikkiaan pysty käsittämään tätä. Miksi tuo mavaa? Kokeilin vielä Addtext-komennolla, ja tuo Updatespace varmaan aiheuttaa sen, mutta miksi?
Eli suosittelisin että kopioit SDK:sta tuon UpdateSpace-funktion ja muokkaat sitä omiin tarkoitusperiisi sopivaksi.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
-
- Devoted Member
- Posts: 718
- Joined: Wed Nov 03, 2010 7:56 pm
- Location: Joku piste pohjoisessa.
Re: Tyhmät kysymykset (I/2011)
Niinpä, taas hyvin nukutun yön jälkeen tajusin miten se korjataanVesQ wrote:UpdateSpace-funktio on aika buginen. Se käyttää hyväksi CB:n sisäistä objektisysteemiä, jossa jokaiselle objektille annetaan muuttujaan arvo, joka juoksee ykkösestä eteenpäin. Jostain syystä tyypin jäsenissä olevat objektit kuitenkin saavat suurempia arvoja (itse huomasin arvojen alkavan kolmosesta ja jatkuvan siitä tasaisesti eteenpäin) niin yrittää UpdateSpace-funktio käyttää olemattomia objekteja -> MAV.naputtelija wrote:Aivoni eivät kerta kaikkiaan pysty käsittämään tätä. Miksi tuo mavaa? Kokeilin vielä Addtext-komennolla, ja tuo Updatespace varmaan aiheuttaa sen, mutta miksi?
Eli suosittelisin että kopioit SDK:sta tuon UpdateSpace-funktion ja muokkaat sitä omiin tarkoitusperiisi sopivaksi.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Re: Tyhmät kysymykset (I/2011)
Yritän tehdä ohjelmaa joka selvittää salasanan, mutta en tiedä miten saan sen selvittämään pidemmän kuin 1-merkkisen merkkijonon?:
Code: Select all
a = Rand (33, 126)
b = Rand (33, 126)
m$ = Chr (a)+Chr (b)
i$ = ""
x = 33
AddText "Jono ON "+m+", mutta kone ei tiedä sitä."
Repeat
x + 1
i = Chr (x)
While i = m
Print "Merkki on "+m+", mutta kone ei tiedä sitä."
Print ""
Print ""
Print ""
Print ""
Print " Sain merkin selville. Se on "+i
WaitKey
End
Wend
DrawScreen
Forever
Aloittelija, koodaaja, jotain...
Salasanan haku
Tässä esimerkki tekniikasta jolla ei oikeasti löydä salasanaa, koska pitäisi tietää salasanan pituus tietämättä itse sanaa ja voida kokeilla jokaista merkkiä kerrallaan toisista riippumatta, mutta ihan kivan näköinen systeemi vaikka hakkerointipeliin.
Vaikkakin jos haluaa optimoida laskentaresursseja ja saada vain kivannäköisen systeemin eikä etsinnän oikeellisuudella ole mitään väliä. Voi vaikka syöttää satunnaismerkkejä ja tietyn "etsintä" ajan kuluttua asettaa oikean merkin paikoilleen.
Vähän näyttävämmin "etsintää" harjoittavasta ohjelmasta vinkkinä tämä.
Toinen esimerkki hieman erilaisesta systeemistä, joka tarkastaa kaikki kirjaimet aina yhtäaikaisesti, tämä on paljon hitaampaa koska minkä tahansa merkin ollessa väärin koko salasana on väärin. Salasanan pituuden kasvaessa oikean sanan löytämiseen kuluva aika moninkertaistuu.
Molemmat tekniikat olettavat että sanan pituus on tiedossa. Näinhän ei välttämättä ole, vain voitaisiin vielä laittaa yksi looppi, joka lisää pituutta mikäli sanaa ei löytynyt lyhyempien joukosta.
Code: Select all
pituus = 20
//tässä luodaan merkkijono
For i=1 To pituus
m$ = m$ + Chr(Rand (33, 126))
Next i
//tietokoneen tietämät merkit
//tässä vaiheessa tietokone ei
//ole löytänyt yhtään oikeaa merkkiä
t$=""
//käydään joka merkki läpi
For i=1 To pituus
//käydään kaikki arvot läpi joka merkissä
For value=33 To 126
//tarkastetaan onko merkki oikea
//ja lisätään tietokoneen merkkeihin
//sikäli mikäli on
If value=Asc(Mid(m$,i,1)) Then t$=t$+Mid(m$,i,1)
//tulostus
Text 0,0, "Oikea merkkijono: "+m$
If t$<>m$ Then
Text 0,20,"Tietokoneen arvaus: "+t$+Chr(value)
Else
Text 0,20,"Tietokoneen vastaus: "+t$
EndIf
DrawScreen
Next value
Next i
WaitKey
Vähän näyttävämmin "etsintää" harjoittavasta ohjelmasta vinkkinä tämä.
Code: Select all
Dim ret(1,1) As Byte
Repeat
Text 0,0,Scramble("Tämä teksti valkenee sulle pikkuhiljaa",5)
DrawScreen
Forever
Function Scramble(_txt$,speed)
l=Len(_txt$)
ClearArray OFF
ReDim ret(l,2) As Byte
If ret(0,0)=0 Then
For i=1 To l
m$=Mid(_txt$,i,1)
ret(i,0)=Asc(m$)
ret(i,2)=0
If ret(i,1)=0 Then ret(i,1)=ret(i,0)+Rand(1,10)
If ret(i,1)>126 And ret(i,1)<145 Then
ret(i,1)=145
ElseIf ret(i,1)>147 And ret(i,1)<161 Then
ret(i,1)=161
ElseIf ret(i,1)>255 Or ret(i,1)<32 Then
ret(i,1)=32
EndIf
If ret(i,1)=ret(i,0) Then ret(i,2)=1
Next i
ret(0,0)=1
EndIf
For o=0 To speed
i=Rand(1,l)
c=0
While ret(i,2)=1
c+1
i=i+1
If i>l Then i=1
If c>l Then Exit
Wend
If ret(i,2)=0 Then
ret(i,1)= ret(i,1) + 1
If ret(i,1)>126 And ret(i,1)<145 Then
ret(i,1)=145
ElseIf ret(i,1)>147 And ret(i,1)<161 Then
ret(i,1)=161
ElseIf ret(i,1)>255 Or ret(i,1)<32 Then
ret(i,1)=32
EndIf
If ret(i,1)=ret(i,0) Then ret(i,2)=1
EndIf
Next o
rStr$=""
For i=1 To l
rStr$=rStr$+Chr(ret(i,(ret(i,2)=0)))
Next i
Return rStr$
End Function
Code: Select all
pituus = 2
//tässä luodaan merkkijono
For i=1 To pituus
m$ = m$ + Chr(Rand (33, 126))
Next i
//tietokoneen arvaus
t$="!!"
//käydään joka merkki läpi
i=pituus
While t$<>m$ And finished=0
While Asc(Mid(t$,i,1))<=126 And finished=0
value = Asc(Mid(t$,i,1))+1
If i=pituus Then tafter$ = "" Else tafter$ = Right(t$,pituus-i)
If i=1 Then tbefore$ = "" Else tbefore$ = Left(t$,i-1)
If value=127 Then
If i=pituus Then tafter$ = "" Else tafter$ = Right(t$,pituus-i)
If tbefore$ <> "" Then tbefore$ = Left(tbefore$,i-2)+Chr(Asc(Right(tbefore$,1))+1)
value=33
i=pituus
EndIf
t$ = tbefore$+Chr(value)+tafter$
If t$=m$ Then finished=1 : Exit: Exit
Text 0,0, "Oikea merkkijono: "+m$
Text 0,20,"Tietokoneen arvaus: "+t$
DrawScreen
Wend
i=i-1
Wend
Text 0,0, "Oikea merkkijono: "+m$
Text 0,20,"Tietokoneen vastaus:"+t$
DrawScreen
WaitKey
Last edited by MetalRain on Wed May 04, 2011 7:03 pm, edited 3 times in total.
-
- Devoted Member
- Posts: 718
- Joined: Wed Nov 03, 2010 7:56 pm
- Location: Joku piste pohjoisessa.
Re: Tyhmät kysymykset (I/2011)
Noin, nyt pääsin siihen asti, että peli piirsi kaiken kaman näytölle kerran ja sitten mavasi.VesQ wrote:UpdateSpace-funktio on aika buginen. Se käyttää hyväksi CB:n sisäistä objektisysteemiä, jossa jokaiselle objektille annetaan muuttujaan arvo, joka juoksee ykkösestä eteenpäin. Jostain syystä tyypin jäsenissä olevat objektit kuitenkin saavat suurempia arvoja (itse huomasin arvojen alkavan kolmosesta ja jatkuvan siitä tasaisesti eteenpäin) niin yrittää UpdateSpace-funktio käyttää olemattomia objekteja -> MAV.naputtelija wrote:Aivoni eivät kerta kaikkiaan pysty käsittämään tätä. Miksi tuo mavaa? Kokeilin vielä Addtext-komennolla, ja tuo Updatespace varmaan aiheuttaa sen, mutta miksi?
Eli suosittelisin että kopioit SDK:sta tuon UpdateSpace-funktion ja muokkaat sitä omiin tarkoitusperiisi sopivaksi.
Tässä on itse "pelin" koodi:
Code: Select all
Include "C:\Program Files\CoolBasic\SDK\include\cbGravitationPhysics.cb"
SCREEN 800,600
DrawScreen
Type PISTEET
Field obj
End Type
piste = LoadObject("C:\Program Files\CoolBasic\SDK\media\dot.bmp")
For i=1 To 10
pis.PISTEET = New (PISTEET)
pis\obj=CloneObject (piste)
PositionObject pis\obj,Rand(-200,200),Rand(-200,200)
ObjectFloat pis\obj,1
Text 0,0,i
DrawScreen
Next i
Repeat
UpdateSpace3()
DrawScreen
Forever
Code: Select all
Function UpdateSpace3()
For pis.PISTEET = Each PISTEET
If ObjectFloat(pis\obj) <> 0.0 Then
xmove# = GetObjectSpeed(pis\obj,xcomp)
ymove# = GetObjectSpeed(pis\obj,ycomp)
If ObjectInteger(pis\obj) = 0 Then
tempobj=CloneObject(pis\obj)
For pis.PISTEET = Each PISTEET
If ObjectFloat(pis\obj) <> 0.0 And temp <> pis\obj Then
gravacc# = gamma * ObjectFloat(pis\obj) / Distance2(temp,pis\obj)^2
gravang# = GetAngle2(temp,pis\obj)
xmove = xmove + Cos(gravang) * gravacc
ymove = ymove + Sin(gravang) * gravacc
EndIf
Next pis
DeleteObject tempobj
ObjectString pis\obj, Str(xmove) + " " + Str(ymove)
EndIf
TranslateObject pis\obj, xmove, ymove
EndIf
Next pis
End Function
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Re: Tyhmät kysymykset (I/2011)
Code: Select all
For pis.PISTEET = Each PISTEET
...
For pis.PISTEET = Each PISTEET
...
Next pis
...
Next pis
Re: Salasanan haku
Arvaa repesinkö ku ajoin ton ekan. Tuli heti sellanen rikossarja-meininki et koodilukkoon kytketään laite joka välkyttelee numeroita Mut kiitti.MetalRain wrote:Tässä esimerkki tekniikasta jolla ei oikeasti löydä salasanaa, koska pitäisi tietää salasanan pituus tietämättä itse sanaa ja voida kokeilla jokaista merkkiä kerrallaan toisista riippumatta, mutta ihan kivan näköinen systeemi vaikka hakkerointipeliin.Vaikkakin jos haluaa optimoida laskentaresursseja ja saada vain kivannäköisen systeemin eikä etsinnän oikeellisuudella ole mitään väliä. Voi vaikka syöttää satunnaismerkkejä ja tietyn "etsintä" ajan kuluttua asettaa oikean merkin paikoilleen.Code: Select all
pituus = 20 //tässä luodaan merkkijono For i=1 To pituus m$ = m$ + Chr(Rand (33, 126)) Next i //tietokoneen tietämät merkit //tässä vaiheessa tietokone ei //ole löytänyt yhtään oikeaa merkkiä t$="" //käydään joka merkki läpi For i=1 To pituus //käydään kaikki arvot läpi joka merkissä For value=33 To 126 //tarkastetaan onko merkki oikea //ja lisätään tietokoneen merkkeihin //sikäli mikäli on If value=Asc(Mid(m$,i,1)) Then t$=t$+Mid(m$,i,1) //tulostus Text 0,0, "Oikea merkkijono: "+m$ If t$<>m$ Then Text 0,20,"Tietokoneen arvaus: "+t$+Chr(value) Else Text 0,20,"Tietokoneen vastaus: "+t$ EndIf DrawScreen Next value Next i WaitKey
Vähän näyttävämmin "etsintää" harjoittavasta ohjelmasta vinkkinä tämä.Toinen esimerkki hieman erilaisesta systeemistä, joka tarkastaa kaikki kirjaimet aina yhtäaikaisesti, tämä on paljon hitaampaa koska minkä tahansa merkin ollessa väärin koko salasana on väärin. Salasanan pituuden kasvaessa oikean sanan löytämiseen kuluva aika moninkertaistuu.Code: Select all
Dim ret(1,1) As Byte Repeat Text 0,0,Scramble("Tämä teksti valkenee sulle pikkuhiljaa",5) DrawScreen Forever Function Scramble(_txt$,speed) l=Len(_txt$) ClearArray OFF ReDim ret(l,2) As Byte If ret(0,0)=0 Then For i=1 To l m$=Mid(_txt$,i,1) ret(i,0)=Asc(m$) ret(i,2)=0 If ret(i,1)=0 Then ret(i,1)=ret(i,0)+Rand(1,10) If ret(i,1)>126 And ret(i,1)<145 Then ret(i,1)=145 ElseIf ret(i,1)>147 And ret(i,1)<161 Then ret(i,1)=161 ElseIf ret(i,1)>255 Or ret(i,1)<32 Then ret(i,1)=32 EndIf If ret(i,1)=ret(i,0) Then ret(i,2)=1 Next i ret(0,0)=1 EndIf For o=0 To speed i=Rand(1,l) c=0 While ret(i,2)=1 c+1 i=i+1 If i>l Then i=1 If c>l Then Exit Wend If ret(i,2)=0 Then ret(i,1)= ret(i,1) + 1 If ret(i,1)>126 And ret(i,1)<145 Then ret(i,1)=145 ElseIf ret(i,1)>147 And ret(i,1)<161 Then ret(i,1)=161 ElseIf ret(i,1)>255 Or ret(i,1)<32 Then ret(i,1)=32 EndIf If ret(i,1)=ret(i,0) Then ret(i,2)=1 EndIf Next o rStr$="" For i=1 To l rStr$=rStr$+Chr(ret(i,(ret(i,2)=0))) Next i Return rStr$ End Function
Molemmat tekniikat olettavat että sanan pituus on tiedossa. Näinhän ei välttämättä ole, vain voitaisiin vielä laittaa yksi looppi, joka lisää pituutta mikäli sanaa ei löytynyt lyhyempien joukosta.Code: Select all
pituus = 2 //tässä luodaan merkkijono For i=1 To pituus m$ = m$ + Chr(Rand (33, 126)) Next i //tietokoneen arvaus t$="!!" //käydään joka merkki läpi i=pituus While t$<>m$ And finished=0 While Asc(Mid(t$,i,1))<=126 And finished=0 value = Asc(Mid(t$,i,1))+1 If i=pituus Then tafter$ = "" Else tafter$ = Right(t$,pituus-i) If i=1 Then tbefore$ = "" Else tbefore$ = Left(t$,i-1) If value=127 Then If i=pituus Then tafter$ = "" Else tafter$ = Right(t$,pituus-i) If tbefore$ <> "" Then tbefore$ = Left(tbefore$,i-2)+Chr(Asc(Right(tbefore$,1))+1) value=33 i=pituus EndIf t$ = tbefore$+Chr(value)+tafter$ If t$=m$ Then finished=1 : Exit: Exit Text 0,0, "Oikea merkkijono: "+m$ Text 0,20,"Tietokoneen arvaus: "+t$ DrawScreen Wend i=i-1 Wend Text 0,0, "Oikea merkkijono: "+m$ Text 0,20,"Tietokoneen vastaus:"+t$ DrawScreen WaitKey
Aloittelija, koodaaja, jotain...
Re: Salasanan haku
TukeKoodi wrote:Arvaa repesinkö ku ajoin ton ekan. Tuli heti sellanen rikossarja-meininki et koodilukkoon kytketään laite joka välkyttelee numeroita Mut kiitti.MetalRain wrote:Tässä esimerkki tekniikasta jolla ei oikeasti löydä salasanaa, koska pitäisi tietää salasanan pituus tietämättä itse sanaa ja voida kokeilla jokaista merkkiä kerrallaan toisista riippumatta, mutta ihan kivan näköinen systeemi vaikka hakkerointipeliin.
Aloittelija, koodaaja, jotain...
-
- Devoted Member
- Posts: 718
- Joined: Wed Nov 03, 2010 7:56 pm
- Location: Joku piste pohjoisessa.
Re: Tyhmät kysymykset (I/2011)
Juu, tiedän. En vain tiennyt ettei se noin toimisi. Räknään systeemiä vähän ja sitten varmaan onnistuu.Dimple wrote:Tarkoituksella samat?Code: Select all
For pis.PISTEET = Each PISTEET ... For pis.PISTEET = Each PISTEET ... Next pis ... Next pis
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
- Misthema
- Advanced Member
- Posts: 312
- Joined: Mon Aug 27, 2007 8:32 pm
- Location: Turku, Finland
- Contact:
Re: Tyhmät kysymykset (I/2011)
Jos vaikka ensin huomauttaisin tuosta sinun väliaikaisesta objektistasi: tempobj != temp.naputtelija wrote:Ja tässä maaginen (ja mavinen) UpdateSpace3:
Onko kenelläkään ratkaisua, miten tuo toimisi?Code: Select all
Function UpdateSpace3() For pis.PISTEET = Each PISTEET If ObjectFloat(pis\obj) <> 0.0 Then xmove# = GetObjectSpeed(pis\obj,xcomp) ymove# = GetObjectSpeed(pis\obj,ycomp) If ObjectInteger(pis\obj) = 0 Then tempobj=CloneObject(pis\obj) For pis.PISTEET = Each PISTEET If ObjectFloat(pis\obj) <> 0.0 And temp <> pis\obj Then gravacc# = gamma * ObjectFloat(pis\obj) / Distance2(temp,pis\obj)^2 gravang# = GetAngle2(temp,pis\obj) xmove = xmove + Cos(gravang) * gravacc ymove = ymove + Sin(gravang) * gravacc EndIf Next pis DeleteObject tempobj ObjectString pis\obj, Str(xmove) + " " + Str(ymove) EndIf TranslateObject pis\obj, xmove, ymove EndIf Next pis End Function
Toisekseen, objekteille ei missään vaiheessa ole määritelty mitään arvoa ObjectInteger:llä, joten miksi edes tarkistat sen?
Ja kolmanneksi, tietääkseni kaksi samannimistä For=Each -objektia ei voi olla sisäkkäin.
Re: Tyhmät kysymykset (I/2011)
Miksei voisi olla?Misthema wrote:Ja kolmanneksi, tietääkseni kaksi samannimistä For=Each -objektia ei voi olla sisäkkäin.
Code: Select all
For pis.PISTEET = Each PISTEET
temp = pis
For pis.PISTEET = Each PISTEET
next pis
pis = temp
Next pis
Se Force variable declaration -valinta on kyllä oikeasti aika hyödyllinen. Sen avulla pystyy bongaamaan kirjoitusvirheet nopeasti. Itse käytän sitä lähes aina, kun koodaan CB:llä.
Re: Tyhmät kysymykset (I/2011)
Kyllähän se toimii
Mutta ainoa tilanne jossa keksisin tuollaiselle rakenteelle käyttöä, on kun tarkistetaan ettei objektikokoelman jäsen törmää kehenkään muuhun jäseneen. Sille tosin lienee helpompiakin rakenteita olemassa.
Code: Select all
Type PISTEET
Field n
EndType
For i=0 To 9
JOO.PISTEET = New(PISTEET)
JOO\n = i+1
Next i
For pis.PISTEET = Each PISTEET
temp = pis
For pis.PISTEET = Each PISTEET
Print pis\n
Wait 200
next pis
pis = temp
Next pis
WaitKey
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Blogi - Peräpohjola - MERPG
Re: Tyhmät kysymykset (I/2011)
Minulla olisi tämmöinen todella tyhmä kysymys.
Varmaan tähän löytyy ratkaisu Coolbasic ohjekirjasta tai varmasti ainakin täältä foorumilta, mutta en jaksanut selata kaikkea läpi.
Kysymykseni:
Miten saisin If - Then lausekkeella(tai jollain muulla, jos on parempi keino) objektin lopettamaan toimintansa (esim. silmukalla saatu objektin pyöriminen) tietyn ajan kuluttua( esim. 1 minuutti)?
Enkä kaipaa tähän: tietenkin se on näin- vastauksia.
Olen vasta aloittelija, enkä tiedä paljoa.
Varmaan tähän löytyy ratkaisu Coolbasic ohjekirjasta tai varmasti ainakin täältä foorumilta, mutta en jaksanut selata kaikkea läpi.
Kysymykseni:
Miten saisin If - Then lausekkeella(tai jollain muulla, jos on parempi keino) objektin lopettamaan toimintansa (esim. silmukalla saatu objektin pyöriminen) tietyn ajan kuluttua( esim. 1 minuutti)?
Enkä kaipaa tähän: tietenkin se on näin- vastauksia.
Olen vasta aloittelija, enkä tiedä paljoa.
Milloin CoolBasic Classic Julkaistaan ?
Huomisen ammattipelintekijä...
Bave-
Huomisen ammattipelintekijä...
Bave-
Re: Tyhmät kysymykset (I/2011)
Bave- wrote:Minulla olisi tämmöinen todella tyhmä kysymys.
Varmaan tähän löytyy ratkaisu Coolbasic ohjekirjasta tai varmasti ainakin täältä foorumilta, mutta en jaksanut selata kaikkea läpi.
Kysymykseni:
Miten saisin If - Then lausekkeella(tai jollain muulla, jos on parempi keino) objektin lopettamaan toimintansa (esim. silmukalla saatu objektin pyöriminen) tietyn ajan kuluttua( esim. 1 minuutti)?
Enkä kaipaa tähän: tietenkin se on näin- vastauksia.
Olen vasta aloittelija, enkä tiedä paljoa.
Code: Select all
aloitusaika=timer() // määritetään aloitusaika, josta voidaan laskea kulunutta aikaa
aika=60000 // 1min = 60s = 60000ms
repeat
...
if timer()-aloitusaika < aika then // jos aikaa on mennyt vähemmän kuin [aika] niin...
rotateobject obj, 1 // ...pyöritetään objektia
endif
until escapekey()
Re: Tyhmät kysymykset (I/2011)
kiitos.
Milloin CoolBasic Classic Julkaistaan ?
Huomisen ammattipelintekijä...
Bave-
Huomisen ammattipelintekijä...
Bave-
Re: Tyhmät kysymykset (I/2011)
Kyselin joku aika sitten (taisi olla viime vuonna?), miten tyyppikokoelman jäsenet saadaan järjestettyä suuruusjärjestykseen jonkin field-muuttujan mukaan. Vastausta ei löytynyt, joten projektini (Swiss-järjestelmään pohjautuva turnausjärjestämistä helpottava kirjanpito-ohjelma) jäätyi kunnes tänään keksin, miten haluttuun tulokseen päästiin ilman tyyppikokoelman järjestämistä. Nyt tuli vastaan toinen ongelma:
Miten saan tarkistettua, onko tyyppikokoelman jäseniä parillinen vai pariton määrä?
Miten saan tarkistettua, onko tyyppikokoelman jäseniä parillinen vai pariton määrä?