Esimerkkejä aloittelijoille.

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Esimerkkejä aloittelijoille.

Post by DatsuniG »

phons wrote:Uskoisin että joku innostuu tekemään tästä vähemmän purkkaisan koodin ja tiedän että olisi pitäyt käyttää tyyppejä, mutta ne nyt jäi... :| :roll:
Done.

Code: Select all

    x=200
    y=150

    Type LINES
        Field x
        Field y
    EndType 
        
    For i = 0 To 3
        uusi.LINES = New(LINES)
        uusi\x = x + Cos(angle + i *90) * 30
        uusi\y = y - Sin(angle + i *90) * 30
    Next i
    
    Repeat
        angle+1
        angle2+2
        uusi.LINES = First(LINES)
        For a = 0 To 3
            uusi\x = x + Cos(angle + a * 90) * 30
            uusi\y = y - Sin(angle + a * 90) * 30
            Line x,y,uusi\x,uusi\y
            For i = 0 To 3
                Line uusi\x,uusi\y,uusi\x + Cos(angle2 + i * 90) * 20,uusi\y - Sin(angle2 + i * 90) * 20
            Next i
            uusi = After(uusi)
        Next a
    DrawScreen
    Forever 
Hengität nyt manuaalisesti.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Esimerkkejä aloittelijoille.

Post by phons »

DatsuniG wrote:Done.
Tänks, tein just itekki, mut vähän eri tavalla. Eipähän tartte tänne pistää... :P
Image
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Esimerkkejä aloittelijoille.

Post by DatsuniG »

Esimerkki rekursiosta:

Code: Select all

SCREEN 800,600

// ASETUKSET //
Const SX = 400 // Aloituksen X-koordinaatti
Const SY = 300 // Aloituksen Y-koordinaatti
Const MinLength = 10 // Viivan minimi pituus
Const StartLength = 200 // Aloitus pituus
Const JAKO = 1.5 // Viivan puolitus funktiota kutsuttaessa
//

Repeat
    angle = WrapAngle(angle + 1) // Piirtokulma
    Line2(SX,SY,StartLength,angle) // Aloitetaan rekursion kutsuminen
    DrawScreen
Forever 

Function Line2(x#,y#,length#,angle)
    If Length > MinLength Then // Jos nykyinen pituus on pidempi kuin minimi pituus
        x1 = x + Cos(WrapAngle(angle + 90)) * Length : x2 = x + Cos(WrapAngle(angle + 270)) * Length
        y1 = y - Sin(WrapAngle(angle + 90)) * Length : y2 = y - Sin(WrapAngle(angle + 270)) * Length
        Line x1,y1,x2,y2 // Piirretään viiva 90 asteen kulmassa verrattuna edelliseen viivaan
        Line2(x1,y1,Length / JAKO,angle + 90) // Kutsutaan funktiota, ja asetetaan uuden viivan toinen päätepiste parametriksi, jaetaan viivan pituus ja muutetaan kulmaa
        Line2(x2,y2,Length / JAKO,angle + 90) // Kutsutaan funktiota, ja asetetaan uuden viivan toinen päätepiste parametriksi, jaetaan viivan pituus ja muutetaan kulmaa
    EndIf 
EndFunction 
Hengität nyt manuaalisesti.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Esimerkkejä aloittelijoille.

Post by Character »

Nostanpa tämän aiheen ettei huku. Tein yhtä projektia varten yksinkertaisen screenshot systeemin:

Code: Select all

//Haetaan jo olemassaolevat screenshotit "SCREENSHOTS" -kansiosta
ChDir "SCREENSHOTS"
scrNumber = 1
StartSearch
    Repeat
        file$ = FindFile()
        If file= "" Then Exit
        If Lower(Right(file, 4)) = ".bmp" And Lower(Left(file, 6)) = "screen" Then scrNumber = scrNumber + 1
    Forever
EndSearch

Repeat
    
    For i = 1 To 50
        Color cbRed
        Box Rand(0, ScreenWidth() - 20), Rand(0, ScreenHeight() - 20), 20, 20, ON
    Next i
    
    //Jos painetaan S, tee screenshot
    If KeyHit(cbkeyS) Then
        ChDir "SCREENSHOTS"
        ScreenShot "SCREEN" + scrNumber + ".bmp"
        scrNumber = scrNumber + 1
    EndIf
    
    DrawScreen
    
Forever
EDIT:

Tein aluksi itsekin suuunnilleen noin mutta siinä oli kai jotain häikkää kun ei toiminut :P Joo tuo onkin parempi.

Last edited by Character on Sat May 23, 2009 5:32 pm, edited 2 times in total.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Esimerkkejä aloittelijoille.

Post by valscion »

Minäkin olen tehnyt Screenshotteja varten funktion :) käytänkin sitä itse asiassa kaikissa projekteissani :p

Code: Select all

Function CheckScreenshot(key = 0)
    If KeyHit(cbkeyF12) Or key = cbKeyF12 Then 
        temp = 0
        tempstr$ = "0000"
        While FileExists("screenshot-"+tempstr+".bmp")
            temp = temp + 1
            If temp < 10 Then 
                tempstr$ = "000"+Str(temp)
            ElseIf temp < 100 Then 
                tempstr$ = "00"+Str(temp)
            ElseIf temp < 1000 Then 
                tempstr$ = "0"+Str(temp)
            ElseIf temp < 10000 Then 
                tempstr$ = Str(temp)
            Else 
                MakeError "Liikaa screenshotteja!!"
            EndIf
        Wend
        ScreenShot("screenshot-"+Str(tempstr)+".bmp")
    EndIf
EndFunction
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
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Esimerkkejä aloittelijoille.

Post by Character »

Hah, tein nopeamman (maybe) :)

Code: Select all

Function ScreenShot2()
    number = 1
    Repeat
        If Not FileExists("screen" + number + ".bmp") Then Exit
        number = number + 1
    Forever
    ScreenShot "screen" + number + ".bmp"
EndFunction
Last edited by Character on Tue May 26, 2009 2:26 pm, edited 2 times in total.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Esimerkkejä aloittelijoille.

Post by valscion »

Character wrote:Hah, tein nopeamman (maybe) :)

Code: Select all

Function ScreenShot2()
    number = 1
    Repeat
        If Not FileExists("screen" + number + ".bmp") Then Exit
        number = number + 1
    Forever
    ScreenShot "screen" + number + ".bmp"
EndFunction
Mutta eipä toimi samalla tavalla. Mun funktio tekee niin, että jokaisessa tiedostossa on aina neljä numeroa, "Screenshot0000.bmp" alkaa ja päättyy "Screenshot9999.bmp". Eipä löydy sitä ominaisuutta sun versiostas :mrgreen:
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
NaxDu
Newcomer
Posts: 3
Joined: Sun Dec 06, 2009 9:53 pm

Re: Esimerkkejä aloittelijoille.

Post by NaxDu »

En jaksanu lukee noita kaikkia sivuja tuosta niimpä kysyn miten voi laittaa esim:kaksi valinta palkki niin että sitä voi klikata hiirellä?
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Esimerkkejä aloittelijoille.

Post by Jonez »

Mikäli ymmärsin oikein, olisi tämän viestiketjun ensimmäinen viesti vastannut kysymykseesi.
Foorumilla on ketju nimeltä Tyhmät Kysymykset, jonne voi esittää minkälaisia vain cb-ohjelmointiin liittyviä kysymyksiä. Tämä taitaa olla väärä ketju.

Tässä on kuitenkin esimerkki nappula-funktiosta (toivottavasti ymmärsin ongelmasi oikein). Toteutettu käyttäen funktioita, joilla nämä onkin selvästi paras tehdä. Jos et funktioita osaa käyttää, katso esimerkit manuaalista.

Code: Select all

Function Nappi( _x, _y, _txt$ )  
    //Onko hiiren koordinaatit napin koordinaattien sisällä, eli napin päällä
    If MouseX() > _x - 40 And MouseX() < _x + 40 Then
        If MouseY() > _y - 20 And MouseY() < _y + 20 Then
            bPäällä = True
        EndIf
    EndIf
    
    //Jos bPäällä = true ...
    If bPäällä Then
        If MouseDown( 1 ) Then 'kun hiiri on pohjassa, nappi on tumma
            Color 150, 150, 150
        Else
            Color 220, 220, 220 'nappi on "highlightattu"
        EndIf
    Else
        Color 200, 200, 200 'normaali napin väri
    EndIf
        
    Box _x - 40, _y - 20, 80, 40 'piirretään nappi
    
    Color cbBlack
    Box _x - 40, _y - 20, 80, 40, 0 'mustat kehykset nappulalle
    Text _x - TextWidth( _txt ) / 2, _y - TextHeight( _txt ) / 2, _txt 'kirjoitetaan teksti nappulaan
    
    //Taas tarkastetaan onko bPäällä "True"
    If bPäällä Then
        If MouseDown( 1 ) Then 'jos hiiri1 on _pohjassa_, palautetaan 2
            Return 2
        ElseIf MouseUp( 1 ) Then 'jos hiiri1 päästettiin pohjasta (eli nappia "painettiin"), palautetaan 1.
            Return 1
        EndIf
    EndIf
EndFunction

//Pääsilmukka
ClsColor cbWhite
Repeat
    
    //Kaksi nappia ja ehtolauseet
    If Nappi( 50, 50, "Älä paina!" ) = 1 Then End
    If Nappi( 140, 50, "Jokunappi" ) = 2 Then Text 10, 10, "Hello World!"

    DrawScreen
Forever
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Esimerkkejä aloittelijoille.

Post by Awaclus »

NaxDu wrote:En jaksanu lukee noita kaikkia sivuja tuosta niimpä kysyn miten voi laittaa esim:kaksi valinta palkki niin että sitä voi klikata hiirellä?
Jos ei jaksa selailla, mikä on varsin ymmärrettävää, kannattaa käyttää foorumin hakutoimintoa. Sillä yleensä löytyy ;)
NaxDu
Newcomer
Posts: 3
Joined: Sun Dec 06, 2009 9:53 pm

Re: Esimerkkejä aloittelijoille.

Post by NaxDu »

Jonez wrote:Mikäli ymmärsin oikein, olisi tämän viestiketjun ensimmäinen viesti vastannut kysymykseesi.
Foorumilla on ketju nimeltä Tyhmät Kysymykset, jonne voi esittää minkälaisia vain cb-ohjelmointiin liittyviä kysymyksiä. Tämä taitaa olla väärä ketju.

Tässä on kuitenkin esimerkki nappula-funktiosta (toivottavasti ymmärsin ongelmasi oikein). Toteutettu käyttäen funktioita, joilla nämä onkin selvästi paras tehdä. Jos et funktioita osaa käyttää, katso esimerkit manuaalista.

Code: Select all

Function Nappi( _x, _y, _txt$ )  
    //Onko hiiren koordinaatit napin koordinaattien sisällä, eli napin päällä
    If MouseX() > _x - 40 And MouseX() < _x + 40 Then
        If MouseY() > _y - 20 And MouseY() < _y + 20 Then
            bPäällä = True
        EndIf
    EndIf
    
    //Jos bPäällä = true ...
    If bPäällä Then
        If MouseDown( 1 ) Then 'kun hiiri on pohjassa, nappi on tumma
            Color 150, 150, 150
        Else
            Color 220, 220, 220 'nappi on "highlightattu"
        EndIf
    Else
        Color 200, 200, 200 'normaali napin väri
    EndIf
        
    Box _x - 40, _y - 20, 80, 40 'piirretään nappi
    
    Color cbBlack
    Box _x - 40, _y - 20, 80, 40, 0 'mustat kehykset nappulalle
    Text _x - TextWidth( _txt ) / 2, _y - TextHeight( _txt ) / 2, _txt 'kirjoitetaan teksti nappulaan
    
    //Taas tarkastetaan onko bPäällä "True"
    If bPäällä Then
        If MouseDown( 1 ) Then 'jos hiiri1 on _pohjassa_, palautetaan 2
            Return 2
        ElseIf MouseUp( 1 ) Then 'jos hiiri1 päästettiin pohjasta (eli nappia "painettiin"), palautetaan 1.
            Return 1
        EndIf
    EndIf
EndFunction

//Pääsilmukka
ClsColor cbWhite
Repeat
    
    //Kaksi nappia ja ehtolauseet
    If Nappi( 50, 50, "Älä paina!" ) = 1 Then End
    If Nappi( 140, 50, "Jokunappi" ) = 2 Then Text 10, 10, "Hello World!"

    DrawScreen
Forever
ymmärsit oikein. :)
NaxDu
Newcomer
Posts: 3
Joined: Sun Dec 06, 2009 9:53 pm

Re: Esimerkkejä aloittelijoille.

Post by NaxDu »

Chaosworm wrote:
NaxDu wrote:En jaksanu lukee noita kaikkia sivuja tuosta niimpä kysyn miten voi laittaa esim:kaksi valinta palkki niin että sitä voi klikata hiirellä?
Jos ei jaksa selailla, mikä on varsin ymmärrettävää, kannattaa käyttää foorumin hakutoimintoa. Sillä yleensä löytyy ;)
unohin ihan kokonaan. :oops:
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Esimerkkejä aloittelijoille.

Post by Sly_Jack0 »

Tässäpä vielä vähän optimoitu versio tuosta edellisestä nappifunkkarista. Valitettavasti en jaksanut laittaa kommentteja. =S

Code: Select all

Function nappi(x,y,t$)
	
	tmpW = TextWidth(t$) + 10
	tmpH = TextHeight(t$) + 10
	
	If MouseX() > x And MouseX() < (x + tmpW) And MouseY() > y And MouseY() < (y + tmpH)
		Color cbSilver
		hover = True
	Else
		Color cbDark
		hover = False
	EndIf
	
	Box x,y,tmpW,tmpH
	
	Color cbWhite
	Text x + 5,y + 5,t$
	
	Return hover + MouseHit(1)
	
EndIf
Tuxi
Active Member
Posts: 190
Joined: Wed Jan 21, 2009 10:25 pm
Contact:

Re: Esimerkkejä aloittelijoille.

Post by Tuxi »

Sly_Jack0 wrote:Tässäpä vielä vähän optimoitu versio tuosta edellisestä nappifunkkarista. Valitettavasti en jaksanut laittaa kommentteja. =S

Code: Select all

Koodia
Ei toimi oikein kunnolla. Funktion on lopetettu käyttäen Endif:iä End Functionin sijaan. Jonezin esimerkkiä käyttäen ohjelma sammuu jo hiiren ollessä "Älä paina!" -napin päällä tai näpäyttämällä mitä tahansa kohtaa ruudussa.
EDIT:

Jaha, että nuin se toimi.

Last edited by Tuxi on Wed Dec 09, 2009 7:36 pm, edited 1 time in total.
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)

-Tuxi- (myös Tuxi4321)
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Esimerkkejä aloittelijoille.

Post by valscion »

Tuxi wrote:
Sly_Jack0 wrote:Tässäpä vielä vähän optimoitu versio tuosta edellisestä nappifunkkarista. Valitettavasti en jaksanut laittaa kommentteja. =S

Code: Select all

Koodia
Ei toimi oikein kunnolla. Funktion on lopetettu käyttäen Endif:iä End Functionin sijaan. Jonezin esimerkkiä käyttäen ohjelma sammuu jo hiiren ollessä "Älä paina!" -napin päällä tai näpäyttämällä mitä tahansa kohtaa ruudussa.
Toimii ne molemmat kunnolla jos osaa käyttää. Jonezin esimerkki toimi täydellisesti, juuri niinkuin pitikin. Sly_Jack0:n esimerkistä puuttui vain esimerkkiohjelma ja näköjään siellä oli tuo pikkuruinen typotus tapahtunut. Tässä on Sly:n koodi esimerkkiohjelmalla varustettuna:

Code: Select all

Function nappi(x,y,t$)
   
   tmpW = TextWidth(t$) + 10
   tmpH = TextHeight(t$) + 10
   
   If MouseX() > x And MouseX() < (x + tmpW) And MouseY() > y And MouseY() < (y + tmpH)
      Color cbSilver
      hover = True
   Else
      Color cbDark
      hover = False
   EndIf
   
   Box x,y,tmpW,tmpH
   
   Color cbWhite
   Text x + 5,y + 5,t$
   
   Return hover + MouseHit(1)
   
EndFunction

// Esimerkkiohjelma
Repeat
    pohjassa = nappi(10,10,"Painaisitko?")
    If pohjassa = 1 Then Text 0, 50, "Painappa sitä vielä ;D"
    If pohjassa = 2 Then MakeError "Hienoa, osasit!"
    
    DrawScreen
Forever
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
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Esimerkkejä aloittelijoille.

Post by legend »

Tässä on yksinkertainen esimerkki, miten kannattaa tehdä tietovisa.
Esimerkissä ei ole IF, eikä Select lausekkeita ollenkaan joka tekee koodista helposti muokattavan ja selkeän.
Tässä esimerkissä on viisi kysymystä.

Code: Select all

   Const kysymyksien_määrä = 5 'kysymyksien määrä
   Const Kysymys$ = "1+1?,Mikä on Suomen pääkaupunki?,2+2+2+2?,Minä vuonna Suomi itsenäistyi?,40-11?" 'kysymykset, erotettaan pilkulla
   Const vastausA = "1,Helsinki,8,1937,39" 'vastaukset, erotetaan pilkulla
   Const vastausB = "2,Turku,6,1423,29"
   Const vastausC = "0,Hämeenlinna,10,1917,19"
   Const oikein = "48,30,30,46,48"  'Vastaukset ovat näppäin koodina
   
   kierros As Byte =1
   pisteet As Byte =0
   
   
   
   While Not kierros -1 = kysymyksien_määrä 'pääsilmukka
       CenterText 200,20, GetWord(kysymys,kierros,",") 'tulostaa kysymyksen
       Text 20,60,"A:" + GetWord(VastausA,kierros,",") 'tulostaa vastaukset
       Text 20,80,"B:" + GetWord(VastausB,kierros,",")
       Text 20,100,"C:" + GetWord(VastausC,kierros,",")
       Text 0,0, "Pisteet: " + pisteet + "/" + (kierros-1) 'tulostaa pisteet
       
       pisteet = pisteet + KeyHit(Int(GetWord(oikein,kierros,",")))
       kierros = kierros + KeyHit(30) + KeyHit(48) + KeyHit(46) '(A,B tai C)
   
       DrawScreen
   Wend
   
   
     Locate 140,20 'tulostetaan loppu tulokset
     AddText "Pisteet: " + pisteet + "/" + (kierros-1)
     AddText "Arvosana(0-100):" + pisteet*100 / (kierros-1)
   
     DrawScreen
   WaitKey
Voitte komentoida =)
tekele

Re: Esimerkkejä aloittelijoille.

Post by tekele »

Joskus tulee ongelmaksi miten palauttaa useampi arvo functiosta. Jos tarvitsee palauttaa enemmän kuin 3 arvoa, niin muistipalat / taulukot ovat suositeltavia.

Tässä nyt yksinkertaiset functiot pisteen palauttamiseen (toimii vain positiivisilla kokonaisluvuilla).

Code: Select all

Dim piste(101)

leveys = ScreenWidth() // taulukon leveys

For a=0 To 100
    piste(a) = Dotxy( Rand(leveys), Rand(ScreenHeight()), leveys )
Next a

Repeat
    For a=0 To 100
        Dot GetX( piste(a), leveys ), GetY( piste(a), leveys )
    Next a
    DrawScreen
Forever

Function Dotxy( x, y, leveys ) // piste yhteen muuttujaan 
    Return leveys * y + x 
EndFunction

Function GetY( dxy, leveys )
    Return RoundDown(dxy / leveys)
EndFunction

Function GetX( dxy, leveys )
    Return RoundDown(dxy Mod leveys)
EndFunction
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Esimerkkejä aloittelijoille.

Post by valscion »

tekele wrote:Joskus tulee ongelmaksi miten palauttaa useampi arvo functiosta. Jos tarvitsee palauttaa enemmän kuin 3 arvoa, niin muistipalat / taulukot ovat suositeltavia.

Tässä nyt yksinkertaiset functiot pisteen palauttamiseen (toimii vain positiivisilla kokonaisluvuilla).
Ovelaa! En ollut itse ajatellutkaan että sen voisi toteuttaa noin... Kiitos esimerkistä :)
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
Joku

Re: Esimerkkejä aloittelijoille.

Post by Joku »

legend wrote:Tässä on yksinkertainen esimerkki, miten kannattaa tehdä tietovisa.
Esimerkissä ei ole IF, eikä Select lausekkeita ollenkaan joka tekee koodista helposti muokattavan ja selkeän.
Tässä esimerkissä on viisi kysymystä.

Code: Select all

   Const kysymyksien_määrä = 5 'kysymyksien määrä
   Const Kysymys$ = "1+1?,Mikä on Suomen pääkaupunki?,2+2+2+2?,Minä vuonna Suomi itsenäistyi?,40-11?" 'kysymykset, erotettaan pilkulla
   Const vastausA = "1,Helsinki,8,1937,39" 'vastaukset, erotetaan pilkulla
   Const vastausB = "2,Turku,6,1423,29"
   Const vastausC = "0,Hämeenlinna,10,1917,19"
   Const oikein = "48,30,30,46,48"  'Vastaukset ovat näppäin koodina
   
   kierros As Byte =1
   pisteet As Byte =0
   
   
   
   While Not kierros -1 = kysymyksien_määrä 'pääsilmukka
       CenterText 200,20, GetWord(kysymys,kierros,",") 'tulostaa kysymyksen
       Text 20,60,"A:" + GetWord(VastausA,kierros,",") 'tulostaa vastaukset
       Text 20,80,"B:" + GetWord(VastausB,kierros,",")
       Text 20,100,"C:" + GetWord(VastausC,kierros,",")
       Text 0,0, "Pisteet: " + pisteet + "/" + (kierros-1) 'tulostaa pisteet
       
       pisteet = pisteet + KeyHit(Int(GetWord(oikein,kierros,",")))
       kierros = kierros + KeyHit(30) + KeyHit(48) + KeyHit(46) '(A,B tai C)
   
       DrawScreen
   Wend
   
   
     Locate 140,20 'tulostetaan loppu tulokset
     AddText "Pisteet: " + pisteet + "/" + (kierros-1)
     AddText "Arvosana(0-100):" + pisteet*100 / (kierros-1)
   
     DrawScreen
   WaitKey
Voitte komentoida =)
Toi on muuten hyvä esimerkki, itse olen tehnyt yleensä sen gotolla.
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Re: Esimerkkejä aloittelijoille.

Post by MrMonday »

En tiedä onko täällä jo tällaista, ja muutenkin aika yksinkertaista muuttujilla kikkailua, eli perus osakekauppaa...

Code: Select all

Raha# = 1000000 // Asetetaan muuttujalle 'Raha' arvo 1000000, eli rahaa on se miljoona.

AutonpaskaaOy# = Rand(10000,50000) // Asetetaan muuttujalle 'AutonpaskaaOy' arvo satunnaisesti väliltä 10000-50000, eli osakkeen arvo.
ViinahanaOy# = Rand(15000,60000) //Asetetaan muuttujalle 'ViinahanaOy' arvo satunnaisesti väliltä 15000-60000, eli osakkeen arvo.
SauhuOy# = Rand(20000,75000) //Asetetaan muuttujalle 'SauhuOy' arvo satunnaisesti väliltä 20000-75000, eli osakkeen arvo.

Repeat // Aloitetaan silmukka

    ClearText // Pyyhitään vanha teksti pois, kokeile poistaa tämä rivi koodista..

    AddText "AutonPaskaaOy "+AutonpaskaaOy# // Lisätään tekstiä riveillä 11-32, eli kaikki mikä ohjelman aikana näkyy.
    AddText "ViinaHanaOy "+ViinahanaOy#
    AddText "SauhuOy "+SauhuOy#
    AddText ""
    AddText ""
    AddText ""

    AddText "Raha: "+raha
    AddText ""
    AddText "(1) Osta Autonpaskaa Oy:n osakkeita"
    AddText "(2) Osta Viinahana Oy:n osakkeita"
    AddText "(3) Osta Sauhu Oy:n osakkeita"
    AddText ""
    AddText "(4) Myy Autonpaskaa Oy:n osakkeita"
    AddText "(5) Myy Viinahana Oy:n osakkeita"
    AddText "(6) Myy Sauhu Oy:n osakkeita"
    AddText ""
    AddText "(Esc) Lopeta"
    AddText ""
    AddText "Autonpaskaa Oy:n osakkeita: "+AutonpaskaaOyn_osakkeita
    AddText "Viinahana Oy:n osakkeita: "+ViinahanaOyn_osakkeita
    AddText "Sauhu Oy:n osakkeita: "+SauhuOyn_osakkeita

    // Seuraavassa tulee koko ohjelman toiminnot, eli tarkistetaan onko tiettyä nappia painettu, 
    // ja jos on, niin tehdään sen jäkeiset toiminnot eli tässä tapauksessa ostetaan tai myydään osakkeita.
    // niin ja määritellään osakkeille arvo uudestaan.

        If KeyHit(1) Then End 
        If KeyHit(2) Then AutonpaskaaOyn_osakkeita+1 : Raha-AutonpaskaaOy : AutonpaskaaOy# = Rand(10000,50000)
        If KeyHit(3) Then ViinahanaOyn_osakkeita+1 : Raha-ViinahanaOy : ViinahanaOy# = Rand(15000,60000)
        If KeyHit(4) Then SauhuOyn_osakkeita+1 : Raha-SauhuOy : SauhuOy# = Rand(20000,75000)

        If KeyHit(5) And AutonpaskaaOyn_osakkeita > 0 Then AutonpaskaaOyn_osakkeita-1 : Raha+AutonpaskaaOy : AutonpaskaaOy# = Rand(10000,50000)
        If KeyHit(6) And ViinahanaOyn_osakkeita > 0 Then ViinahanaOyn_osakkeita-1 : Raha+ViinahanaOy : ViinahanaOy# = Rand(15000,60000)
        If KeyHit(7) And SauhuOyn_osakkeita > 0 Then SauhuOyn_osakkeita-1 : Raha+SauhuOy : SauhuOy# = Rand(20000,75000)

        If Raha < 0 Then Goto konkurssi // Jos rahaa on vähemmän kuin 0, eli raha on loppu, 
                                        // niin siirrytään kohtaan 'konkurssi'.
        If Raha > 1500000 Then Goto voitto // Jos rahaa on enemmän kuin 1500000, niin siirrytään kohtaan 'voitto'.

    DrawScreen // piirretään näyttö
Forever // Suljetaan silmukka, eli palataan silmukan alkuun.

konkurssi:

ClearText
AddText "Menit konkurssiin..."
DrawScreen
WaitKey

voitto:

ClearText
AddText "Voitit"
DrawScreen
WaitKey
toivottavasti edes jotain apua.
Ja jos oli jotain isoja virheitä/puutteita/parannettavaa, niin kommenttia vaan..
EDIT:

Ja värien kanssa myös, väri kertoo kannattaako ostaa vai myydä..

Code: Select all

    Raha# = 1000000 // Asetetaan muuttujalle 'Raha' arvo 1000000, eli rahaa on se miljoona.

    AutonpaskaaOy# = Rand(10000,50000) // Asetetaan muuttujalle 'Autonpaskaa' arvo satunnaisesti väliltä 10000-50000, eli osakkeen arvo.
    ViinahanaOy# = Rand(15000,60000) //Asetetaan muuttujalle 'ViinahanaOy' arvo satunnaisesti väliltä 15000-60000, eli osakkeen arvo.
    SauhuOy# = Rand(20000,75000) //Asetetaan muuttujalle 'SauhuOy' arvo satunnaisesti väliltä 20000-75000, eli osakkeen arvo.

    Repeat // Aloitetaan silmukka
       
        ClsColor 100,100,0
        Color 0,200,255

        ClearText // Pyyhitään vanha teksti pois, kokeile poistaa tämä rivi koodista..

        AddText "AutonPaskaaOy "+AutonpaskaaOy# // Lisätään tekstiä riveillä 11-32, eli kaikki mikä ohjelman aikana näkyy.
        AddText "ViinaHanaOy "+ViinahanaOy#
        AddText "SauhuOy "+SauhuOy#
        AddText ""
        AddText ""
        AddText ""
        AddText "Raha: "+raha
        AddText ""
        If AutonpaskaaOy > 10000 Then Color 0,255,0
        If AutonpaskaaOy > 25000 Then Color 255,255,0
        If AutonpaskaaOy > 35000 Then Color 255,0,0
        AddText "(1) Osta Autonpaskaa Oy:n osakkeita"
        If ViinahanaOy > 15000 Then Color 0,255,0
        If ViinahanaOy > 30000 Then Color 255,255,0
        If ViinahanaOy > 45000 Then Color 255,0,0
        AddText "(2) Osta Viinahana Oy:n osakkeita"
        If SauhuOy > 20000 Then Color 0,255,0
        If SauhuOy > 40000 Then Color 255,255,0
        If SauhuOy > 60000 Then Color 255,0,0
        AddText "(3) Osta Sauhu Oy:n osakkeita"
        AddText ""
        If AutonpaskaaOy > 10000 Then Color 255,0,0
        If AutonpaskaaOy > 20000 Then Color 255,255,0
        If AutonpaskaaOy > 35000 Then Color 0,255,0
        AddText "(4) Myy Autonpaskaa Oy:n osakkeita"
        If ViinahanaOy > 15000 Then Color 255,0,0
        If ViinahanaOy > 30000 Then Color 255,255,0
        If ViinahanaOy > 45000 Then Color 0,255,0
        AddText "(5) Myy Viinahana Oy:n osakkeita"
        If SauhuOy > 20000 Then Color 255,0,0
        If SauhuOy > 40000 Then Color 255,255,0
        If SauhuOy > 60000 Then Color 0,255,0
        AddText "(6) Myy Sauhu Oy:n osakkeita"

        Color 0,200,255
        AddText ""
        AddText "(Esc) Lopeta"
        AddText ""
        AddText "Autonpaskaa Oy:n osakkeita: "+AutonpaskaaOyn_osakkeita
        AddText "Viinahana Oy:n osakkeita: "+ViinahanaOyn_osakkeita
        AddText "Sauhu Oy:n osakkeita: "+SauhuOyn_osakkeita

        // Seuraavassa tulee koko ohjelman toiminnot, eli tarkistetaan onko tiettyä nappia painettu,
        // ja jos on, niin tehdään sen jäkeiset toiminnot eli tässä tapauksessa ostetaan tai myydään osakkeita.
        // niin ja määritellään osakkeille arvo uudestaan.

            If KeyHit(1) Then End
            If KeyHit(2) Then AutonpaskaaOyn_osakkeita+1 : Raha-AutonpaskaaOy : AutonpaskaaOy# = Rand(10000,50000) : ViinahanaOy# = Rand(15000,60000) : SauhuOy# = Rand(20000,75000)
            If KeyHit(3) Then ViinahanaOyn_osakkeita+1 : Raha-ViinahanaOy : AutonpaskaaOy# = Rand(10000,50000) : ViinahanaOy# = Rand(15000,60000) : SauhuOy# = Rand(20000,75000)
            If KeyHit(4) Then SauhuOyn_osakkeita+1 : Raha-SauhuOy : AutonpaskaaOy# = Rand(10000,50000) : ViinahanaOy# = Rand(15000,60000) : SauhuOy# = Rand(20000,75000)

            If KeyHit(5) And AutonpaskaaOyn_osakkeita > 0 Then AutonpaskaaOyn_osakkeita-1 : Raha+AutonpaskaaOy : AutonpaskaaOy# = Rand(10000,50000) : ViinahanaOy# = Rand(15000,60000) : SauhuOy# = Rand(20000,75000)
            If KeyHit(6) And ViinahanaOyn_osakkeita > 0 Then ViinahanaOyn_osakkeita-1 : Raha+ViinahanaOy : AutonpaskaaOy# = Rand(10000,50000) : ViinahanaOy# = Rand(15000,60000) : SauhuOy# = Rand(20000,75000)
            If KeyHit(7) And SauhuOyn_osakkeita > 0 Then SauhuOyn_osakkeita-1 : Raha+SauhuOy : AutonpaskaaOy# = Rand(10000,50000) : ViinahanaOy# = Rand(15000,60000) : SauhuOy# = Rand(20000,75000)

            If Raha < 0 Then Goto konkurssi // Jos rahaa on vähemmän kuin 0, eli raha on loppu,
                                            // niin siirrytään kohtaan 'konkurssi'.
            If Raha > 2000000 Then Goto voitto // Jos rahaa on enemmän kuin 1500000, niin siirrytään kohtaan 'voitto'.

        DrawScreen // piirretään näyttö
    Forever // Suljetaan silmukka, eli palataan silmukan alkuun.

    konkurssi:

    ClearText
    AddText "Menit konkurssiin..."
    DrawScreen
    WaitKey
    End

    voitto:

    ClearText
    AddText "Voitit"
    DrawScreen
    WaitKey
    End
[/edit]
Post Reply