Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2011)

Post by koodaaja »

Valmista komentoa moiseen ei löydy, mutta ei tuota mahdotonta ole itse toteuttaa. Yksinkertaisin purkkaratkaisu jonka keksin on tallentaa tämänhetkinen rivi muuttujaan ja lähteä lyhentämään sitä sana kerrallaan kunnes se mahtuu kokonaisuudessaan ruudulle, jolloin kyseinen pätkä tulostetaan ja poistetaan rivin alusta ja tätä jatketaan kunnes koko tekstinpätkä on tulostettu. Koodiksi ajatus kääntyy esimerkiksi seuraavasti:

Code: Select all

'make window bigger as otherwise the text won't fit 
SCREEN 580,420,16,cbwindowed

'open the file 
f=OpenToRead("license.txt")

textline=0

'print the whole file to the screen 
While Not EOF(f)
    txt$ = ReadLine(f)
    Repeat
        curln$ = txt
        While TextWidth(curln)>ScreenWidth()//toistetaan kunnes tämänhetkinen pätkä mahtuu ruudulle
            lastlen = 1+Len(GetWord(curln,Int(CountWords(curln))))//lasketaan viimeisen sanan ja sen vieressä olevan välilyönnin pituus
            curln = StrRemove(curln,Len(curln)+1-lastlen,lastlen)//poistetaan kyseinen sana ja välilöynti rivin lopusta
        Wend
        Text 0,textline,trim(curln)
        txt = StrRemove(txt,1,Len(curln))//poistetaan jo tulostettu pätkä rivin alusta ja siirrytään seuraavaan
        textline=textline+12
    Until txt=""
Wend

'show the screen 
DrawScreen

'don't forget this! 
CloseFile f

WaitKey
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2011)

Post by Sly_Jack0 »

Tälläinenkin funktio löytyi: http://www.cbrepository.com/codes/code/27/
Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen »

Miten saisin tekstin pysymään ruudulla vaikka 5 sekunttia jonka jälkeen se poistettaisiin? Olen tuolla Timer hommalla yrittänyt jotain, mutta en ymmärrä miten sen sillä saisi.
Siis yritän tehdä niin että kun joku muuttuja on esim. 1 silloin näytettäisi teksti joka näkyisi ruudulla 5 sekunttia.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2011)

Post by Jonez »

En enempiä selittele, jos olet jo yrittänyt tätä saada aikaiseksi:

Code: Select all

aika = Timer()
aika_ruudulla = 5000 //5000 ms =  5s
Repeat
    If Timer() - aika <= aika_ruudulla Then
        muuttuja$ = "Hello World"
    Else
        muuttuja = ""
    EndIf
    Text 20, 20, muuttuja
    DrawScreen
Forever
Edit. virhe koodissa, korjattu...
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2011)

Post by jaahas »

Tuosa:

Code: Select all

Repeat

  If KeyHit(cbkeyreturn) Then
  
    aika=Timer()
    
  EndIf
    
  If Timer()<aika+5000 Then
    
    sek=(aika+5000-Timer()-((aika+5000-Timer()) Mod 1000))/1000
    
    Text 100,100,"Tämä katoaa "+sek+" sekunnin kuluessa."
      
  EndIf
  
  DrawScreen
  
Forever

EDIT:

Jonez ehti eka

EnOsaaMitään
Newcomer
Posts: 5
Joined: Sun Aug 14, 2011 8:08 am

Re: Tyhmät kysymykset (I/2011)

Post by EnOsaaMitään »

Elikkä olisko mahdollista suojata coolbasic ohjelma jollain "rekisteröintikoodilla" ja millä komennoilla se onnistuisi... ja mielellään selkeästi selitettynä :)


ja btw en tarkota mitään encryptaamista vaan että sun pitäis tavallaan "rekisteröidä" se ohjelma että pääset käyttään sitä.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 »

EnOsaaMitään wrote:Elikkä olisko mahdollista suojata coolbasic ohjelma jollain "rekisteröintikoodilla" ja millä komennoilla se onnistuisi... ja mielellään selkeästi selitettynä :)


ja btw en tarkota mitään encryptaamista vaan että sun pitäis tavallaan "rekisteröidä" se ohjelma että pääset käyttään sitä.
Noh... Onhan se mahdollista, esim. tallentaa jonkun hashin avaimesta ohjelmaan ja sitten syötetty rekisteröinti koodi hashattaisiin ja verrattaisiin tallennetun kanssa. Mutta vähän epäilen, tarvitsetko oikeasti rekisteröintikoodia ohjelmaasi.

Hashaamiseen voit käyttää vaikka md5:sta: http://www.cbrepository.com/codes/code/35/
EnOsaaMitään
Newcomer
Posts: 5
Joined: Sun Aug 14, 2011 8:08 am

Re: Tyhmät kysymykset (I/2011)

Post by EnOsaaMitään »

Latexi95 wrote:
EnOsaaMitään wrote:Elikkä olisko mahdollista suojata coolbasic ohjelma jollain "rekisteröintikoodilla" ja millä komennoilla se onnistuisi... ja mielellään selkeästi selitettynä :)


ja btw en tarkota mitään encryptaamista vaan että sun pitäis tavallaan "rekisteröidä" se ohjelma että pääset käyttään sitä.
Noh... Onhan se mahdollista, esim. tallentaa jonkun hashin avaimesta ohjelmaan ja sitten syötetty rekisteröinti koodi hashattaisiin ja verrattaisiin tallennetun kanssa. Mutta vähän epäilen, tarvitsetko oikeasti rekisteröintikoodia ohjelmaasi.

Hashaamiseen voit käyttää vaikka md5:sta: http://www.cbrepository.com/codes/code/35/
No siis perjaattessa en mutta oisin tarvinnut sitä varten että oisin voinut sitten sen crackata :DD mutta perjaattessa tarkotin sellasta että sulla on yksi tai muutama ennalta määrätty salasana jolla voisit ohjelmaa käyttää...
EnOsaaMitään
Newcomer
Posts: 5
Joined: Sun Aug 14, 2011 8:08 am

Re: Tyhmät kysymykset (I/2011)

Post by EnOsaaMitään »

Taisin keksiä tosta jonkunlaisen raakaversion... xD

Code: Select all

    oikea$="1234"
   
    Repeat
    
    Locate 10,30
    
    l:    
    
    Serial$=Input("Serial:  ","")
    
    DrawScreen
    
    Text -20,-20,GetWord (Serial$,1)
    
    If Serial$ = oikea$ Then Goto a   
    
    DrawScreen
    
    Until EscapeKey()
    
    a:
    
    CloseInput    
    AddText "Tuote Rekisteröity!"
    Goto loop 
    
    e:
    CloseInput
    Text 10,20,"Väärä Rekisteröintikoodi!"
    Goto l
    
    loop:
    
    AddText "Ohjelmasi on nyt rekisteröity"
    Repeat
    DrawScreen
    Forever
mutta miten saisin tohon lisättyä vielä että jos kirjottaa väärän niin se menee tohon e:hen?
Last edited by Jare on Sun Aug 21, 2011 7:55 am, edited 1 time in total.
Reason: Laitoin koodin laatikkoon
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Viltzu »

EnOsaaMitään wrote:Taisin keksiä tosta jonkunlaisen raakaversion... xD

Code: Select all

    
    oikea$="1234"
   
    Repeat
    
    Locate 10,30
    
    l:    
    
    Serial$=Input("Serial:  ","")
    
    DrawScreen
    
    Text -20,-20,GetWord (Serial$,1)
    
    If Serial$ = oikea$ Then Goto a   
    
    DrawScreen
    
    Until EscapeKey()
    
    a:
    
    CloseInput    
    AddText "Tuote Rekisteröity!"
    Goto loop 
    
    e:
    CloseInput
    Text 10,20,"Väärä Rekisteröintikoodi!"
    Goto l
    
    loop:
    
    AddText "Ohjelmasi on nyt rekisteröity"
    Repeat
    DrawScreen
    Forever

mutta miten saisin tohon lisättyä vielä että jos kirjottaa väärän niin se menee tohon e:hen?
Lukemalla manuaalista IF -lausekkeesta. Ja käytä code tageja.

Code: Select all

 ja [ /code] (Ilman väliä)
Edit: Eikä tuollasia turhaa rivittämistä sitten.
EnOsaaMitään
Newcomer
Posts: 5
Joined: Sun Aug 14, 2011 8:08 am

Re: Tyhmät kysymykset (I/2011)

Post by EnOsaaMitään »

Viltzu wrote:
EnOsaaMitään wrote:Taisin keksiä tosta jonkunlaisen raakaversion... xD

Code: Select all

    
    oikea$="1234"
   
    Repeat
    
    Locate 10,30
    
    l:    
    
    Serial$=Input("Serial:  ","")
    
    DrawScreen
    
    Text -20,-20,GetWord (Serial$,1)
    
    If Serial$ = oikea$ Then Goto a   
    
    DrawScreen
    
    Until EscapeKey()
    
    a:
    
    CloseInput    
    AddText "Tuote Rekisteröity!"
    Goto loop 
    
    e:
    CloseInput
    Text 10,20,"Väärä Rekisteröintikoodi!"
    Goto l
    
    loop:
    
    AddText "Ohjelmasi on nyt rekisteröity"
    Repeat
    DrawScreen
    Forever

mutta miten saisin tohon lisättyä vielä että jos kirjottaa väärän niin se menee tohon e:hen?
Lukemalla manuaalista IF -lausekkeesta. Ja käytä code tageja.

Code: Select all

 ja [ /code] (Ilman väliä)
Edit: Eikä tuollasia turhaa rivittämistä sitten.[/quote]


okei... siis kokeilin tota "if [] then [] else []" niin se heittää heti sen tonne e:hen että miten saisin sen odottamaan että jotain nelinumeroista koodia yritetään?
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2011)

Post by jaahas »

Code: Select all

salasana1$="1234"
salasana2$="4321"

Repeat

  If state=0 Then

    txt$=Input("Salasana:")
  
    If KeyHit(28) Then state=1 : CloseInput()
  
  ElseIf state=1 Then
  
    If txt=salasana1 Or txt=salasana2 Then
    
      Exit
      
    Else
    
      Text 0,0,"Salasana väärin"
      If KeyHit(28) Then state=0
      
    EndIf
    
  EndIf

  DrawScreen
  
Forever

//ohjelma tähän
EnOsaaMitään
Newcomer
Posts: 5
Joined: Sun Aug 14, 2011 8:08 am

Re: Tyhmät kysymykset (I/2011)

Post by EnOsaaMitään »

jaahas wrote:

Code: Select all

salasana1$="1234"
salasana2$="4321"

Repeat

  If state=0 Then

    txt$=Input("Salasana:")
  
    If KeyHit(28) Then state=1 : CloseInput()
  
  ElseIf state=1 Then
  
    If txt=salasana1 Or txt=salasana2 Then
    
      Exit
      
    Else
    
      Text 0,0,"Salasana väärin"
      If KeyHit(28) Then state=0
      
    EndIf
    
  EndIf

  DrawScreen
  
Forever

//ohjelma tähän


Kiitos :)
Dimple
Active Member
Posts: 103
Joined: Wed Nov 17, 2010 5:43 pm

Re: Tyhmät kysymykset (I/2011)

Post by Dimple »

Tuossa lähestymistavassa on vain sellainen heikkous, että se oikea salasana lukee selkokielisenä siellä exe:ssä eikä sen lukeminen vaadi kovinkaan paljoa taitoa. Sen takia Latexi95:n ehdottama hashin tallentaminen selkokielisen salasanan sijaan on erittäin suositeltavaa. Myös esim. käyttöjärjestelmien salasanat on tallennettu hasheina.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by valscion »

Dimple wrote:Tuossa lähestymistavassa on vain sellainen heikkous, että se oikea salasana lukee selkokielisenä siellä exe:ssä eikä sen lukeminen vaadi kovinkaan paljoa taitoa.
Ei ne merkkijonot siellä exessä selkokielisenä lue, kaikki CB:n exejen merkkijonot salataan exen sisällä. Mutta kun ne voi sieltä silti purkaa...

...jonka takia onkin järkevämpää tallentaa juurikin ne hashit.
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
Guest

Re: Tyhmät kysymykset (I/2011)

Post by Guest »

Code: Select all

FrameLimit 60
pongiskartta=LoadMap("omattiedostot\pongiskartta.til","omattiedostot\pongistausta.png")
PlayObject pongiskartta,0,0,1
pongauttajavasen =LoadObject("omattiedostot\pongauttajavasen.png")
pongauttajaoikea =LoadObject("omattiedostot\pongauttajaoikea.png")
PositionObject pongauttajavasen, -170,10
PositionObject pongauttajaoikea,170,10
MaskObject pongauttajaoikea,cbWhite
MaskObject pongauttajavasen,cbWhite
Repeat
If KeyDown(cbkeyW) Then MoveObject pongauttajavasen,-0,-3
If KeyDown(cbkeyS) Then MoveObject pongauttajavasen,0,3
If KeyDown(cbkeyW) Then MoveObject pongauttajaoikea,-0,-3
If KeyDown(cbkeyS) Then MoveObject pongauttajaoikea,0,3
DrawScreen
Forever
Niin mikä tässä koodissa on vikana koska se väittää että ei voi ladata karttaa?
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 »

Veikkaisin, että tiedostopolut ovat väärin. Onko samassa kansiossa, missä koodisi on, kansio "omattiedostot" ja siellä tuo kartta ja tileset? Veikkaisin, että ei ole. Suosittelen, että teet projektillesi kansion, jossa koodi on, ja sinne kansioon kansion nimeltään "Media" ja laitat sinnen kaikki kuvat ja kartat. Sitten vain lataat kaiken tiedostopolulla "Media\...".
esim. pongiskartta=LoadMap("Media\pongiskartta.til","Media\pongistausta.png")
Dimple
Active Member
Posts: 103
Joined: Wed Nov 17, 2010 5:43 pm

Re: Tyhmät kysymykset (I/2011)

Post by Dimple »

VesQ wrote:Ei ne merkkijonot siellä exessä selkokielisenä lue, kaikki CB:n exejen merkkijonot salataan exen sisällä.
Totta, unohdin että CB:ssä on tuollainen hienous. Tosin muistista sen voi kuitenkin lukea, kun se ladataan sinne.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2011)

Post by esa94 »

Dimple wrote:
VesQ wrote:Ei ne merkkijonot siellä exessä selkokielisenä lue, kaikki CB:n exejen merkkijonot salataan exen sisällä.
Totta, unohdin että CB:ssä on tuollainen hienous. Tosin muistista sen voi kuitenkin lukea, kun se ladataan sinne.
Ja kun kerran se salasanakin on jo tiedossa niin turhahan siihen on luottaa.
Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen »

Miten olisi mahdollista tehdä "fps" peli cb:llä niinkuin mitä esim. Wolfenstein 3d(2.5d) oli?
Ja miten siis pääsisin alkuun jos haluaisin alkaa sellaista peliä tekemään?
Locked