Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 3:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe » Sat May 01, 2010 11:02 am

Toimii muuten ihan hienosti, mutta sitten pitäisi saada avaus - ja sulkutagin väliin sijoittuva teksti vielä erilleen:
<background>kuva.png</background>
mites nyt?
mulla kun lukee koodissa että kun kohdataan tietty tagi, niin kutsutaan funktiota joka laittaisi kuvan näytölle. Millä nappaan kuvan nimen tuosta välistä?

User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 12:17 pm
Location: Espoo

Re: Tyhmät kysymykset (I/2010)

Post by MetalRain » Sat May 01, 2010 11:26 am

Näin nappaat tagien välistä tekstiä:

Code: Select all

Print GetTag("randomtekstiä<background>kuva.png</background>ja pikkasen enemmän","background")
WaitKey 

Function GetTag(txt$,tag$)
    alku=InStr(txt$,"<"+tag$+">")
    loppu=InStr(txt$,"</"+tag$+">")
    
    If alku And loppu Then 
        l=Len(tag$)
        Return Mid(txt$,alku+l+2,loppu-(alku+l+2))
    EndIf 

End Function  

Warlock
Member
Posts: 78
Joined: Thu Jul 31, 2008 11:08 pm

Re: Tyhmät kysymykset (I/2010)

Post by Warlock » Sat May 01, 2010 12:03 pm

Kuinka toteuttaa ammuntapelin näkökenttä niin, että kaikki, minne hahmo ei nää, on mustaa? Esim. Tapan Kaikki 4
Image

DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 3:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe » Sat May 01, 2010 12:44 pm

MetalRain wrote:
DJ-Nerd wrote:Terve taas :)
Teen omaa tyylitiedostokieltä cb:lle (vain omaan käyttöön toistaiseksi).
Miten saan tulkin lukemaan ja erottelemaan useita tageja samalta riviltä, kun tagit merkitään "<tagi>" - syntaksilla?
Tässä nyt eräänlainen tagintarkistus. Osaa katsoa merkkijonosta onko siinä joku tagi ja osaa listata merkkijonon tagit. Korjaa/muuttele jos syntaksi ei sovi omiin tarkoituksiisi.

Code: Select all

Print IsTagged("hauki on <kala>","kala")

Print ListTags("<huono><tyhmä>joo<p>ajoo<olio>hahaha")
WaitKey

Function IsTagged(txt$,tag$)

    If InStr(txt$,"<"+tag$+">") Then Return 1 Else Return 0

End Function 

Function ListTags(txt$)

    list$=""

    l=Len(txt$)

    edellinen=0
    
    alku=InStr(txt$,"<")

    While alku<l And alku<>-1

        pituus=InStr(Mid(txt$,edellinen+alku+1),">")-1
        
        If pituus Then 
            list$=list$+Mid(txt$,edellinen+alku+1,pituus)+" "
        EndIf 
        
        edellinen=edellinen+alku+pituus+1
        
        alku=InStr(Mid(txt$,edellinen),"<")-1
        
    Wend 
    
    Return Trim(list$)
    
End Function
Tarvitsen funktion, joka palauttaa tageja 1 kerrallaan ohjelman käsiteltäväksi. Mitä hyötyä minulle tästä on kun ei ole edes kommentteja ja merkkijonojen käsittely ei ole hallinnassa cb:llä?


Tarvitsen funktion, joka syöttää tiedostosta yhden tagin kerrallaan käsiteltäväksi, joka laukaisee funktion, joka käsittelee tagin sisällön ja käsittelyn jälkeen siirtyy tarkastelemaan seuraavaa tagia.
Tiedoston syntaksi on joko:

<tagi1>sisältö</tagi1><tagi2>sisältö</tagi2>

tai

<tagi1>sisältö</tagi1>
<tagi2>sisältö</tagi2>

User avatar
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu » Sat May 01, 2010 12:49 pm

DJ-Nerd wrote:
MetalRain wrote:
DJ-Nerd wrote:Terve taas :)
Teen omaa tyylitiedostokieltä cb:lle (vain omaan käyttöön toistaiseksi).
Miten saan tulkin lukemaan ja erottelemaan useita tageja samalta riviltä, kun tagit merkitään "<tagi>" - syntaksilla?
Tässä nyt eräänlainen tagintarkistus. Osaa katsoa merkkijonosta onko siinä joku tagi ja osaa listata merkkijonon tagit. Korjaa/muuttele jos syntaksi ei sovi omiin tarkoituksiisi.

Code: Select all

Print IsTagged("hauki on <kala>","kala")

Print ListTags("<huono><tyhmä>joo<p>ajoo<olio>hahaha")
WaitKey

Function IsTagged(txt$,tag$)

    If InStr(txt$,"<"+tag$+">") Then Return 1 Else Return 0

End Function 

Function ListTags(txt$)

    list$=""

    l=Len(txt$)

    edellinen=0
    
    alku=InStr(txt$,"<")

    While alku<l And alku<>-1

        pituus=InStr(Mid(txt$,edellinen+alku+1),">")-1
        
        If pituus Then 
            list$=list$+Mid(txt$,edellinen+alku+1,pituus)+" "
        EndIf 
        
        edellinen=edellinen+alku+pituus+1
        
        alku=InStr(Mid(txt$,edellinen),"<")-1
        
    Wend 
    
    Return Trim(list$)
    
End Function
Tarvitsen funktion, joka palauttaa tageja 1 kerrallaan ohjelman käsiteltäväksi. Mitä hyötyä minulle tästä on kun ei ole edes kommentteja ja merkkijonojen käsittely ei ole hallinnassa cb:llä?
Siitä vain opettelemaan. :) Avainsana: GetWord
Sillä pitäisi onnistua tuosta MetalRainin funktiosta napsittua. (En kyllä testannut koodia mutta koodia katsomalla ilmeisesti listaa tagit välilyönnillä eroteltuna)

Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus » Sat May 01, 2010 1:09 pm

Warlock wrote:Kuinka toteuttaa ammuntapelin näkökenttä niin, että kaikki, minne hahmo ei nää, on mustaa? Esim. Tapan Kaikki 4
Kaikkein yksinkertaisimmillaan tämä onnistuu niin, että teet liitteenä olevan laisen kuvan, ja piirrät sen kaiken päälle oikeassa kulmassa (ja maskaat magentalla).

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja » Sat May 01, 2010 1:19 pm

Chaosworm wrote:
Warlock wrote:Kuinka toteuttaa ammuntapelin näkökenttä niin, että kaikki, minne hahmo ei nää, on mustaa? Esim. Tapan Kaikki 4
Kaikkein yksinkertaisimmillaan tämä onnistuu niin, että teet liitteenä olevan laisen kuvan, ja piirrät sen kaiken päälle oikeassa kulmassa (ja maskaat magentalla).
Pyöritetyissä objekteissa maskivärin on pakko olla musta (ellei haluta armotonta bugailua) , muuten juurikin näin.

DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 3:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe » Sat May 01, 2010 1:20 pm

Viltzu wrote:
DJ-Nerd wrote:
MetalRain wrote:...
Tarvitsen funktion, joka palauttaa tageja 1 kerrallaan ohjelman käsiteltäväksi. Mitä hyötyä minulle tästä on kun ei ole edes kommentteja ja merkkijonojen käsittely ei ole hallinnassa cb:llä?
Siitä vain opettelemaan. :) Avainsana: GetWord
Sillä pitäisi onnistua tuosta MetalRainin funktiosta napsittua. (En kyllä testannut koodia mutta koodia katsomalla ilmeisesti listaa tagit välilyönnillä eroteltuna)

Code: Select all

a=OpenToRead("tiedot.CBSS")

Repeat

tarkista(a)

Until EOF(a)


Repeat
DrawScreen
Forever



function tarkista(a)

rivi$=Trim(ReadLine(a))
rivi$=listtags(rivi$)
asd=CountWords(rivi$)
For i=1 to asd
Select rivi$

Case "<otsikko>"
otsikko(ReadLine(a))
Case "<tausta>"
tausta(a)


EndSelect
Next i


EndFunction


Function otsikko(mj$)
SetWindow "***" + mj$ + "***"
EndFunction

Function tausta(a)
s$=ReadLine(a)
floor=MakeObjectFloor()
grid=LoadImage(s$)
PaintObject floor,grid
EndFunction



'__________________________________________________________


Function ListTags(txt$)

    list$=""

    l=Len(txt$)

    edellinen=0
   
    alku=InStr(txt$,"<")

    While alku<l And alku<>-1

        pituus=InStr(Mid(txt$,edellinen+alku+1),">")-1
       
        If pituus Then
            list$=list$+Mid(txt$,edellinen+alku+1,pituus)+" "
        EndIf
       
        edellinen=edellinen+alku+pituus+1
       
        alku=InStr(Mid(txt$,edellinen),"<")-1
       
    Wend
   
    Return "" + Trim(list$)
   
EndFunction
parameter must be greater than 0
eli mitä helvettiä?

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2010)

Post by Latexi95 » Sat May 01, 2010 1:26 pm

En kokeillut, mutta veikkaan että koetat käyttää Mid funktiota siten, että aloitus paikka on 0.
Cb:n Mid ei osaa aloittaa ensimmäisesta kirjaimesta.
Käytä siihen Left funktiota.

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja » Sat May 01, 2010 1:30 pm

DJ-Nerd wrote:plåplåplåå
Itselläni tuo kääntyy vallan mainiosti, olisi siis kiva tietää mikä rivi ongelman kenties aiheuttaa.

User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2010)

Post by Jonez » Sat May 01, 2010 1:41 pm

DJ-Nerd wrote: Tarvitsen funktion, joka syöttää tiedostosta yhden tagin kerrallaan käsiteltäväksi, joka laukaisee funktion, joka käsittelee tagin sisällön ja käsittelyn jälkeen siirtyy tarkastelemaan seuraavaa tagia.
Tiedoston syntaksi on joko:

<tagi1>sisältö</tagi1><tagi2>sisältö</tagi2>

tai

<tagi1>sisältö</tagi1>
<tagi2>sisältö</tagi2>
Koodasin funktion joka ei vastaa täysin hakemaasi, mutta kykenee palauttamaan tekstiä tiettyjen avainsanojen perusteella. Pienellä säädöllä saat siitä varmasti sellaisen joka tukee montaa eri avainsanaa. Funktiossa ilmsteyvä 6 tarkoittaa sanan <tagi> pituutta, eli joudut sitä muuttamaan jos haluat eri avainsanoja. Tällä hetkellä funktio ei välttämättä toimi kunnolla jos päättävä avainsana on eripituinen kuin yhden merkin verran aloittavaa avainsanaa pidempi.

Code: Select all

Print PalautaTagi( "<tagi></tagi><tagi>g</tagi><tagi></tagi><tagi>Tämä teksti palautetaan</tagi> TÄMÄ EI NÄY <tagi>tämä myös</tagi> mitä jos tänne lisäilee jotain?" )
WaitKey

Function PalautaTagi( _str As String )
    vasen = 1
    While True
        vasen = InStr( _str, "<tagi>", vasen ) + 6
        If vasen = 6 Then Return txt$
        oikea = InStr( _str, "</tagi>", vasen )
        If oikea >= vasen + 1 Then txt$ = txt + Mid( _str, vasen, oikea - vasen ) + " "     
        vasen = oikea + 7
    Wend
EndFunction
Edit. Piti editoida viestiä niin postasinkin quoten siitä :S. Sitä ne viiden tunnin yöunet teettää.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War

Warlock
Member
Posts: 78
Joined: Thu Jul 31, 2008 11:08 pm

Re: Tyhmät kysymykset (I/2010)

Post by Warlock » Sat May 01, 2010 6:03 pm

Chaosworm wrote:
Warlock wrote:Kuinka toteuttaa ammuntapelin näkökenttä niin, että kaikki, minne hahmo ei nää, on mustaa? Esim. Tapan Kaikki 4
Kaikkein yksinkertaisimmillaan tämä onnistuu niin, että teet liitteenä olevan laisen kuvan, ja piirrät sen kaiken päälle oikeassa kulmassa (ja maskaat magentalla).
Tota oon iteki kokeillu, mutta menee kyl aika hirmu kauan ladata sitä, olisko kevyempää vaihtoehtoa?
Image

oblivios_tha_koodari
Member
Posts: 55
Joined: Fri Apr 30, 2010 10:55 pm

Re: Tyhmät kysymykset (I/2010)

Post by oblivios_tha_koodari » Sat May 01, 2010 6:15 pm

tää on kyl aika tyhmä kysymys mut voiko cb:hen tehä mappei muilla tileset ohjelmil ku tilesteril?

Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus » Sat May 01, 2010 6:17 pm

Warlock wrote:
Chaosworm wrote:
Warlock wrote:Kuinka toteuttaa ammuntapelin näkökenttä niin, että kaikki, minne hahmo ei nää, on mustaa? Esim. Tapan Kaikki 4
Kaikkein yksinkertaisimmillaan tämä onnistuu niin, että teet liitteenä olevan laisen kuvan, ja piirrät sen kaiken päälle oikeassa kulmassa (ja maskaat magentalla).
Tota oon iteki kokeillu, mutta menee kyl aika hirmu kauan ladata sitä, olisko kevyempää vaihtoehtoa?
No tietysti käyttää ympyränmuotoista aluetta, jolloin kestänee vain noin 2-3 sekuntia kun ei tarvitse pyörittää.

Oblivios: Voi. Etsi hakusanoilla "TileGen" ja "Stigmator".

oblivios_tha_koodari
Member
Posts: 55
Joined: Fri Apr 30, 2010 10:55 pm

Re: Tyhmät kysymykset (I/2010)

Post by oblivios_tha_koodari » Sat May 01, 2010 8:26 pm

kiitti.
mutta nyt törmäsin muutamaan muuhun ongelmaan.
latasin tilegenin btw.
en löydä mitään hyviä valmiiksi tehtyjä tilesettejä enkä haluaisi ensimmäiseen peliin tehdä itse.
en ole kovin hyvä piirtämään (vielä) enkä edes tiedä mitään hyvää(ja halpaa/ilmaista) ohjelmaa sellaisen tekoon
ja probleemo löytämissäni tileseteissä on se että niissä on pienet valkoiset viivat tiilien välissä joka ärsyttää minua...
e: niin ja voiko tilesettiin luoda kaltevaa tasoa?
e2:sitte olis semmone ongelma pelissä jota olen tällä hetkellä suunnittelemassa että miten voi tehdä vai voiko ylipäätänsä liikkuvia
alustoja. toiseksi miten voi tehdä tappavan tiilen?

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (I/2010)

Post by phons » Sat May 01, 2010 9:11 pm

oblivios_tha_koodari wrote:kiitti.
mutta nyt törmäsin muutamaan muuhun ongelmaan.
latasin tilegenin btw.
en löydä mitään hyviä valmiiksi tehtyjä tilesettejä enkä haluaisi ensimmäiseen peliin tehdä itse.
en ole kovin hyvä piirtämään (vielä) enkä edes tiedä mitään hyvää(ja halpaa/ilmaista) ohjelmaa sellaisen tekoon
ja probleemo löytämissäni tileseteissä on se että niissä on pienet valkoiset viivat tiilien välissä joka ärsyttää minua...
e: niin ja voiko tilesettiin luoda kaltevaa tasoa?
e2:sitte olis semmone ongelma pelissä jota olen tällä hetkellä suunnittelemassa että miten voi tehdä vai voiko ylipäätänsä liikkuvia
alustoja. toiseksi miten voi tehdä tappavan tiilen?
Tilesettejä löytyy ainakin foorumien yleinen alueen vaapaasti käytettävät kuvat- topikkista.
Kaltevaa tasoa?
Liikkuvia alustoja.. voi, tietysti. CB:hen voi tehdä mitä vain, mielikuvitus rajana(no ei ehkä voi kääntää kännykälle yhteensopivaksi yms. ääripää juttuja). Teet objektin ja liikutat sitä edestakaisin, asetat törmäyksen ukkoon ja voìla. Tappava tile, katsot GetMap funktiolla osuiko ukko johonkin tietynlaiseen tileen, ja sitten esim. vähennät elämiä tai tapat ukon, jollain tapaa.
Image

muistipala

Re: Tyhmät kysymykset (I/2010)

Post by muistipala » Sun May 02, 2010 7:13 pm

Aiheuttaako tämä ohjelma kenellekkään mavia?
Itselle on jäänyt hieman epäselväksi, voiko cb:ssä palauttaa muistipalassa useamman kuin yhden kuvan osoitteen ilman ongelmia. Tässä ohjelmassa ei ole juurikaan hyötyä palauttaa kuvia muistipaloissa, mutta minulla on tekeillä ohjelma, missä haluaisin yhden tyypin soluun usean variaation samasta kuvasta, joka onnistuisi helpoiten tällä tyylillä..

Code: Select all


img = LoadImage("media\map.bmp")
mem = return2picture( img )
AddText "paina hiirtä"

Repeat
    If MouseHit(1) Then id = Not id
    Drawimages( mem, 0,0, id )
    DrawScreen
Forever

Function Drawimages( mem, x,y, id )
    If id = 0 Then
        DrawImage PeekInt(mem,0), x,y
    Else
        DrawImage PeekInt(mem,4), x,y
    EndIf
EndFunction

Function return2picture( kuva )
    mem = MakeMEMBlock(8)
    img = CloneImage( kuva )
    ResizeImage img, ImageWidth(kuva)/2, ImageHeight(kuva)/2
    PokeInt mem, 0, kuva
    PokeInt mem, 4, img
    Return mem // palauttaa kuvien osoitteet muistipalassa..
EndFunction

User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2010)

Post by Jonez » Sun May 02, 2010 7:19 pm

muistipala wrote:Aiheuttaako tämä ohjelma kenellekkään mavia?
Ei aiheuta mavia, tuo on aivan toimiva systeemi.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (I/2010)

Post by rami123 » Sun May 02, 2010 9:01 pm

En millään saa toimivaa viivaa, tai tiedä minkäänlaista selitystä miten sen tekisin. A paikasta B viiva systeemi ois tarkoitus olla viivan tyyli. Klick piste klick johtaa sen sinhe.
edit:Ei enhää, mitää.

edit2: datsuni, tuokin on toimiva kiitos : )
Last edited by rami123 on Sun May 02, 2010 9:49 pm, edited 1 time in total.

DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset (I/2010)

Post by DatsuniG » Sun May 02, 2010 9:45 pm

Tällaista?

Code: Select all

Dim POINTS(1, 1) As Integer, set%
Repeat
    If MouseHit(1) Then 
        If set = 2 Then set = 0
        POINTS(set, 0) = MouseX()
        POINTS(set, 1) = MouseY()
        set = set + 1
    EndIf 
    If set = 2 Then Line POINTS(0, 0), POINTS(0, 1), POINTS(1, 0), POINTS(1, 1) 
    DrawScreen
Forever 
EDIT:

Jaa.

Hengität nyt manuaalisesti.

Locked