Coolbasicin sisäiset tehtävät

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

Coolbasicin sisäiset tehtävät

Post by DatsuniG »

Eli kootaan tähän mahdollisia ratkaisuja Coolbasicin omiin tehtäviin.

A
A1:

Code: Select all

Color cbRed
Repeat
Box x,y,30,30
x=x+RightKey()-LeftKey()
y=y+Downkey()-Upkey()
DrawScreen
Forever
A2:

Code: Select all

For i = 1 To i + 1
    Color 255 * abs(Sin(i Mod 360)), abs(255 * Sin(i Mod 360)), 0
    Box 0,0,400,300
    DrawScreen
Next i
TAI

Code: Select all

    Repeat
        Color 127.5+(127.5*Sin(Timer()Shr 3)), (Sin(Timer()Shr 3)*127.5)+127.5, 0
        Box 180,130,40,40
        DrawScreen
    Forever
A3:

Code: Select all

    Repeat
        If (Timer() Mod 1000)<500 Then Text 10, 10, "Text!"
        DrawScreen
    Forever
A4:

Code: Select all

    Repeat
       stri$ = Str(Rand(1, 49)) // Merkkijonon tyhjennys ja ensimmäinen numero
       For i = 0 To 5 // Käydään läpi 6 numeroa
          While (InStr(stri$, Str(a)) Or a = 0) // Jos numeroa ei ole annettu tai numero löytyy jo merkkijonosta
             a = Rand(1, 49) // Arvotaan uusi numero
          Wend
          stri = stri + " " + a // Kun numero ON saatu lisätään se jonoon
       Next i
       Print stri // Tulostetaan jono käyttäjälle
       Repeat // Odotetaan että käyttäjä painaa enter tai esc (ilman esc ohjelmasta poistuminen hankalaa)
       Until (GetKey() = 13 Or KeyDown(1))
    Until KeyDown(1) // Kierretään kunnes käyttäjä painaa esc
A5:

Code: Select all

main:
Repeat
    nimi$=Input("Etunimi? : ")
DrawScreen
Until KeyHit(cbkeyreturn)
CloseInput

Repeat
    sukunimi$=Input("Sukunimi? : ")
DrawScreen
Until KeyHit(cbkeyreturn)
CloseInput

nimi=Upper(Mid(nimi,1,1))+Lower(Mid(nimi,2,Len(nimi)-1))
sukunimi=Upper(Mid(sukunimi,1,1))+Lower(Mid(sukunimi,2,Len(sukunimi)-1))

Repeat
Color cborange
Text 0,0,nimi
Color cbpink
Text TextWidth(" "+nimi),0,sukunimi
DrawScreen
Forever 

A6:

Code: Select all

Repeat
luku=Input("Syötä luku: ")
DrawScreen
Until KeyHit(cbkeyreturn)

arvo=1

For i=1 To luku
    arvo=arvo*i
Next i

Print arvo

WaitKey 
A7:

Code: Select all

SCREEN 800,600

vuoro=0

x=0
y=0

x2=760
y2=560

Repeat
Color 98,235,33
Box 0,0,800,600

Color cbred
Box x,y,40,40

Color cbdarkblue
Box x2,y2,40,40

If Boxoverlap(x,y,40,40,x2,y2,40,40) Then 
vuoro = Not vuoro
x=Rand(760) : x2=Rand(760)
y=Rand(560) : y2=Rand(560)
EndIf 

Color cbblack
Select vuoro

    Case 0
        Text ScreenWidth()/2-TextWidth("Jahtaaja: RED"),0,"Jahtaaja: RED"
    Case 1
        Text ScreenWidth()/2-TextWidth("Jahtaaja: BLUE"),0,"Jahtaaja: BLUE"
EndSelect

x=x+(LeftKey()-RightKey())*-2
y=y+(UpKey()-DownKey())*-2

x2=x2+(KeyDown(cbkeya)-KeyDown(cbkeyd))*-2
y2=y2+(KeyDown(cbkeyw)-KeyDown(cbkeys))*-2
DrawScreen
Forever 
A8:

Code: Select all

käännös$=""

Main:
Repeat
inputsana$=Input("Syötä käännettävä sana: ")
Text 0,20,"Käännös "+sana$+" - "+käännös$
DrawScreen
Until KeyHit(cbkeyreturn)

CloseInput 

sana$=Lower(inputsana)

Select sana
    Case "matriculation examination"
        käännös$="Ylioppilastutkinto"
    
    Case "vulgarity"
        käännös="Rivous"
        
    Case "schedule"
        käännös="Aikataulu"
        
    Case "assigment"
        käännös="Koulutehtävä"
    
    Default
        käännös="???"
EndSelect 

Goto main 
A10:

Code: Select all

SCREEN 800,400

Type Bullet
Field obj
Field nopeus
EndType

base=LoadObject("media/turret.bmp")
pati=LoadObject("media/bigbullet.bmp",180)
cannon=LoadObject("media/cannon.bmp",180)
tatti=LoadObject("media/tatti.bmp")

ScreenPositionObject base,80,384
CloneObjectPosition cannon,base

ShowObject pati,OFF

voima=10

PositionObject tatti,325,Rand(-200,200)

Repeat

Text 0,0,"Voima: "+voima
Box 20,20,voima*2,10
voima=voima+(DownKey()-UpKey())*-2
If voima<1 Then voima=1
If voima>100 Then voima=100
TurnObject cannon,(RightKey()-LeftKey())*-2

If KeyHit(cbkeyreturn) And liikkeessä=False Then 
    liikkeessä=True 
    uusi.BULLET = New(BULLET)
    uusi\obj=CloneObject(pati)
    uusi\nopeus=voima/3+1
    CloneObjectOrientation uusi\obj,cannon
    CloneObjectPosition uusi\obj,cannon
EndIf 

For uusi.BULLET = Each BULLET
    If ObjectX(uusi\obj)>400 Or ObjectX(uusi\obj)<-400 Or ObjectY(uusi\obj)>200 Or ObjectY(uusi\obj)<-200 Then 
        DeleteObject uusi\obj
        Delete uusi
        liikkeessä=False 
        Exit
    EndIf

    If ObjectsOverlap(uusi\obj,tatti) Then
        PositionObject tatti,325,Rand(-200,200)
        DeleteObject uusi\obj
        Delete uusi
        liikkeessä=False 
        Exit
    EndIf 
    
    MoveObject uusi\obj,uusi\nopeus

Next uusi

DrawScreen
Forever 
A11:

Code: Select all

aloita=MakeMenuIMG("Aloita")
aloita2=MakemenuHoverIMG("Aloita")

asetukset=MakeMenuIMG("Asetukset")
asetukset2=MakemenuHoverIMG("Asetukset")

Lopeta=MakeMenuIMG("Lopeta")
Lopeta2=MakeMenuHoverIMG("Lopeta")

hiiri=MakeImage(3,3)

Repeat

DrawImage hiiri,MouseX(),MouseY()

DrawImage aloita,20,20
DrawImage asetukset,20,50
DrawImage lopeta,20,80 

If ImagesOverlap(hiiri,MouseX(),MouseY(),aloita,20,20) Then 
    DrawImage aloita2,20,20
        If MouseHit(1) Then MakeError "Aloita"
EndIf 

If ImagesOverlap(hiiri,MouseX(),MouseY(),asetukset,20,50) Then 
    DrawImage asetukset2,20,50
        If MouseHit(1) Then MakeError "Asetukset"
EndIf

If ImagesOverlap(hiiri,MouseX(),MouseY(),lopeta,20,80) Then 
    DrawImage lopeta2,20,80
        If MouseHit(1) Then MakeError "Lopeta"
EndIf

DrawScreen
Forever 

Function MakeMenuIMG(txt$)
Color cbwhite 
    img=MakeImage(TextWidth(txt)+4,TextHeight(txt)+4)
        DrawToImage img
            Box 0,0,TextWidth(txt)+4,TextHeight(txt)+4,OFF 
            Text 2,-2,txt
        DrawToScreen 
Return img
EndFunction

Function MakeMenuHoverIMG(txt$)
    img=MakeImage(TextWidth(txt)+4,TextHeight(txt)+4)
        DrawToImage img
            Color cbred 
            Box 0,0,TextWidth(txt)+4,TextHeight(txt)+4
            Color cbwhite 
            Box 0,0,TextWidth(txt)+4,TextHeight(txt)+4,OFF 
            Text 2,-2,txt
        DrawToScreen 
Return img
EndFunction
        
    
B
B1:

Code: Select all

main:
Repeat
    nimi$=Input("Etunimi? : ")
DrawScreen
Until KeyHit(cbkeyreturn)
CloseInput

Repeat
    sukunimi$=Input("Sukunimi? : ")
DrawScreen
Until KeyHit(cbkeyreturn)
CloseInput

nimi=Upper(Mid(nimi,1,1))+Lower(Mid(nimi,2,Len(nimi)-1))
sukunimi=Upper(Mid(sukunimi,1,1))+Lower(Mid(sukunimi,2,Len(sukunimi)-1))

Repeat
Color cborange
Text 0,0,nimi
Color cbpink
Text TextWidth(" "+nimi),0,sukunimi
DrawScreen
Forever
B2:

Code: Select all

SCREEN 400,400
img=MakeImage(400,400)
Repeat

DrawImage img,0,0

If MouseDown(1) Then
    DrawToImage img
        Line x,y,MouseX(),MouseY()
        x=MouseX()
        y=MouseY()
    DrawToScreen
EndIf 

DrawScreen

Forever 

B3:

Code: Select all

SCREEN 300,300
Dim Ruudukko(2,2) As integer, Vuoro As Integer
Repeat
    For a = 0 To 2
        For i = 0 To 2
            Box i * ScreenWidth() / 3, a * ScreenHeight() / 3, ScreenWidth() / 3, ScreenHeight() / 3, 0
            If MouseX() > i * ScreenWidth() / 3 And MouseX() < (i + 1) * ScreenWidth() / 3 And MouseY() > a * ScreenHeight() / 3 And MouseY() < (a + 1) * ScreenHeight() / 3 And MouseHit(1) And Ruudukko(i,a) = 0 Then
                Ruudukko(i,a) = vuoro + 1
                vuoro = Not vuoro
            ElseIf ruudukko(i,a) = 1 Then
                Ellipse i * ScreenWidth() / 3, a * ScreenHeight() / 3, ScreenWidth() / 3, ScreenHeight() / 3,0
            ElseIf ruudukko(i,a) = 2 Then
                Line i * ScreenWidth() / 3, a * ScreenHeight() / 3, (i + 1) * ScreenWidth() / 3 , (a + 1) * ScreenHeight() / 3
                Line (i + 1) * ScreenWidth() / 3 , a * ScreenHeight() / 3 , i * ScreenWidth() / 3 , (a + 1) * ScreenHeight() / 3
            EndIf
            If (Ruudukko(a,0) = (Not vuoro) + 1 And Ruudukko(a,1) = (Not vuoro) + 1 And Ruudukko(a,2) = (Not vuoro) + 1) Or (Ruudukko(0,i) = (Not vuoro) + 1 And Ruudukko(1,i) = (Not vuoro) + 1 And Ruudukko(2,i) = (Not vuoro) + 1) Or (Ruudukko(0,0) = (Not vuoro) + 1 And Ruudukko(1,1) = (Not vuoro) + 1 And Ruudukko(2,2) = (Not vuoro) + 1) Or (Ruudukko(2,0) = (Not vuoro) + 1 And Ruudukko(1,1) = (Not vuoro) + 1 And Ruudukko(0,2) = (Not vuoro) + 1) Then MakeError Chr(79 + (Not vuoro) * 9) + " voitti!"
        Next i
    Next a   
    DrawScreen
Forever
C

C1:

Code: Select all

Repeat : Dot x,y : x=x+(LeftKey()-RightKey())*-(Max(KeyDown(cbkeylshift)*4,Max(KeyDown(cbkeyrshift)*4,1))) : y=y+(UpKey()-DownKey())*-(Max(KeyDown(cbkeylshift)*4,Max(KeyDown(cbkeyrshift)*4,1))) : DrawScreen : Forever 
C2:

Code: Select all

Repeat

        If MouseHit(1) Then //Pisteen A asetus
            pointAx=MouseX()
            pointAy=MouseY()
            pointAset=True
        EndIf
       
        If MouseHit(2) Then //Pisteen B asetus
            pointBx=MouseX()
            pointBy=MouseY()
            pointBset=True
        EndIf

        If pointAset And pointBset Then
           
            angle# = GetAngle (pointAx, pointAy, pointBx, pointBy)
            normal# = angle# + 90.0
           
            For i=-5 To 5 //yhteensä 11 kun nolla otetaan mukaan
                Line pointAx+Cos(normal)*i, pointAy-Sin(normal)*i,pointBx+Cos(normal)*i, pointBy-Sin(normal)*i
            Next i
       
        EndIf

        DrawScreen

    Until EscapeKey() 
TAI:

Code: Select all

        Repeat

            If MouseHit(1) Then //Pisteen A asetus
                pointAx=MouseX()
                pointAy=MouseY()
                pointAset=True
            EndIf
           
            If MouseHit(2) Then //Pisteen B asetus
                pointBx=MouseX()
                pointBy=MouseY()
                pointBset=True
            EndIf

            If pointAset And pointBset Then
               
                normal# = GetAngle (pointAx, pointAy, pointBx, pointBy)
                dis=Distance(pointax,pointay,pointbx,pointby)
               
                For i=0 To dis
                    Circle pointAx+Cos(normal)*i, pointAy-Sin(normal)*i,11
                Next i
           
            EndIf

            DrawScreen

        Until EscapeKey() 
Last edited by DatsuniG on Thu Feb 04, 2010 9:37 pm, edited 10 times in total.
Hengität nyt manuaalisesti.
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Coolbasicin sisäiset tehtävät

Post by DatsuniG »

Nonniin, lisäilin tuonne B1, B2, B3 ja C1:n
Hengität nyt manuaalisesti.
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Coolbasicin sisäiset tehtävät

Post by MAVmaggot »

IMHO tehtävistä pitäisi ehdottomasti olla enemmän rivimäärää rajoittavia että opittaisiin välttämään purkkaa, sekä muistinkäyttöä rajoittavia tehtäviä, jotta vältettäisiin turhia muuttujia, ja joitakin ominaisuuksia pois sulkemalla, jotta opittaisiin käyttämään eri ominaisuuksia, esim. objektit pois suljettaisiin jossakin harjoituksessa, että opittaisiin käyttämään kuvia/piirtokomentoja. Mutta asiaan; ihan kivasti olit tehnyt noita. C1:tä olen koittanut monesti yrittää muttei siitä mitään ole tullut, hienosti teit senkin ;)
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Coolbasicin sisäiset tehtävät

Post by otto90x »

Tässä vielä C2.

Code: Select all

Repeat

    If MouseHit(1) Then //Pisteen A asetus
        pointAx=MouseX()
        pointAy=MouseY()
        pointAset=True
    EndIf
    
    If MouseHit(2) Then //Pisteen B asetus
        pointBx=MouseX()
        pointBy=MouseY()
        pointBset=True
    EndIf

    If pointAset And pointBset Then
        
        angle# = GetAngle (pointAx, pointAy, pointBx, pointBy)
        normal# = angle# + 90.0
        
        For i=-5 To 5 //yhteensä 11 kun nolla otetaan mukaan
            Line pointAx+Cos(normal)*i, pointAy-Sin(normal)*i,pointBx+Cos(normal)*i, pointBy-Sin(normal)*i
        Next i
    
    EndIf

    DrawScreen

Until EscapeKey() 
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Ris
Active Member
Posts: 142
Joined: Wed Jul 02, 2008 8:27 pm

Re: Coolbasicin sisäiset tehtävät

Post by Ris »

Postini tässä topikissa on nykyään turha / vanha.
Last edited by Ris on Sun Feb 14, 2010 1:40 am, edited 4 times in total.
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Coolbasicin sisäiset tehtävät

Post by DatsuniG »

otto90x wrote:Tässä vielä C2.

Code: Select all

Repeat

    If MouseHit(1) Then //Pisteen A asetus
        pointAx=MouseX()
        pointAy=MouseY()
        pointAset=True
    EndIf
    
    If MouseHit(2) Then //Pisteen B asetus
        pointBx=MouseX()
        pointBy=MouseY()
        pointBset=True
    EndIf

    If pointAset And pointBset Then
        
        angle# = GetAngle (pointAx, pointAy, pointBx, pointBy)
        normal# = angle# + 90.0
        
        For i=-5 To 5 //yhteensä 11 kun nolla otetaan mukaan
            Line pointAx+Cos(normal)*i, pointAy-Sin(normal)*i,pointBx+Cos(normal)*i, pointBy-Sin(normal)*i
        Next i
    
    EndIf

    DrawScreen

Until EscapeKey() 
Eikös tuo viivan tekeminen kannattaisi toteuttaa enemmin näin?

Code: Select all

    Repeat

        If MouseHit(1) Then //Pisteen A asetus
            pointAx=MouseX()
            pointAy=MouseY()
            pointAset=True
        EndIf
       
        If MouseHit(2) Then //Pisteen B asetus
            pointBx=MouseX()
            pointBy=MouseY()
            pointBset=True
        EndIf

        If pointAset And pointBset Then
           
            normal# = GetAngle (pointAx, pointAy, pointBx, pointBy)
            dis=Distance(pointax,pointay,pointbx,pointby)
           
            For i=0 To dis
                Circle pointAx+Cos(normal)*i, pointAy-Sin(normal)*i,11
            Next i
       
        EndIf

        DrawScreen

    Until EscapeKey() 
Raskaampaa on, mutta nätimpää ;)
Hengität nyt manuaalisesti.
korjausmiäs

Re: Coolbasicin sisäiset tehtävät

Post by korjausmiäs »

A3:n vähemmän purkkainen tapa:

Code: Select all

Repeat
    If (Timer() / 500) Mod 2 Then Text 50, 50, "TOIMIIKO?"
    DrawScreen
Forever
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Coolbasicin sisäiset tehtävät

Post by DatsuniG »

korjausmiäs wrote:A3:n vähemmän purkkainen tapa:

Code: Select all

Repeat
    If (Timer() / 500) Mod 2 Then Text 50, 50, "TOIMIIKO?"
    DrawScreen
Forever
Eka välkäytys ei ole aina 0,5 sec *nus* *nus*
Hengität nyt manuaalisesti.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Coolbasicin sisäiset tehtävät

Post by KilledWhale »

A4 pakatumpana ja kommentoituna:

Code: Select all

Repeat
	stri$ = Str(Rand(1, 49)) // Merkkijonon tyhjennys ja ensimmäinen numero
	For i = 0 To 5 // Käydään läpi 6 numeroa
		While (InStr(stri$, Str(a)) Or a = 0) // Jos numeroa ei ole annettu tai numero löytyy jo merkkijonosta
			a = Rand(1, 49) // Arvotaan uusi numero
		Wend
		stri = stri + " " + a // Kun numero ON saatu lisätään se jonoon
	Next i
	Print stri // Tulostetaan jono käyttäjälle
	Repeat // Odotetaan että käyttäjä painaa enter tai esc (ilman esc ohjelmasta poistuminen hankalaa)
	Until (GetKey() = 13 Or KeyDown(1))
Until KeyDown(1) // Kierretään kunnes käyttäjä painaa esc
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Coolbasicin sisäiset tehtävät

Post by Koodiapina »

Tässä vielä samainen A4 puristettuna 4 riviin:

Code: Select all

Repeat
  If InStr(a$,Str(Timer() Mod 49 + 1)+" ")=0 And CountWords(a)<>7 And Rand(7)=0 Then a=a+Str(Timer() Mod 49 + 1)+" " Else DrawScreen
  If CountWords(a)=7 And KeyHit(28) Then a="" Else Text 0,0,a
Until Escapekey()
Last edited by Koodiapina on Tue Jul 21, 2009 8:25 pm, edited 3 times in total.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Coolbasicin sisäiset tehtävät

Post by phons »

Eikö olisi sinäänsä parempi että porukat tekisivät tehtävät itse. Onhan hyvä antaa vastauksia noihin kysymyksiin ja mahdollisuuksiakin on monia. :roll:
Image
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Coolbasicin sisäiset tehtävät

Post by KilledWhale »

A1 hieman pakatumpana ja lisäherkkuna vielä törmäystarkistus seiniin:

Code: Select all

For i$ = "" To i + " "
	s$ = Min(Max(Int(GetWord(s$, 1)) + RightKey() - LeftKey(), 0), ScreenWidth() - 30) + " " + Min(Max(Int(GetWord(s$, 2)) + DownKey() - UpKey(), 0), ScreenHeight() - 30)
	Box Int(GetWord(s$, 1)), Int(GetWord(s$, 2)), 30, 30
	If i = "" Then Color 255, 0, 0 Else DrawScreen
Next i$
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
KankiKalle
Active Member
Posts: 170
Joined: Mon Jun 23, 2008 9:04 pm

Re: Coolbasicin sisäiset tehtävät

Post by KankiKalle »

Todella hienoa, nyt näen oliko omista koodeistani mihinkään! Täytyy vain vastustaa kiusausta katsoa vastauksia etukäteen :D
Väsyttää niin ettei jaksa edes mennä lepäämään.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Coolbasicin sisäiset tehtävät

Post by Jani »

Taas tämä vanha A4 mutta tällä kertaa toteutettu suurimmaksi osakseen muuttujilla

Code: Select all

p=0 //ensimmäisen numeron korkeussuunnan muuttuja on p
p2=20 //toisen p2
p3=40 //kolmannen p3
p4=60 //neljännen p4
p5=80 //viidennen p5
p6=100 //kuudennen p6
p7=120 //seitsemännen p7

Randomize Timer()

uusi:

For i=1 To 1

    a=Rand(1,49) //ensimmäinen numero asetetaan muuttujaan a
    a2=Rand(1,49) //toinen muuttujaan a2
    a3=Rand(1,49) //kolmas muuttujaan a3
    a4=Rand(1,49) //neljäs muuttujaan a4
    a5=Rand(1,49) //viides muuttujaan a5
    a6=Rand(1,49) //kuudes muuttujaan a6
    a7=Rand(1,49) //seitsemäs muuttujaan a7
    
    //Kirjoitetaan nyt nämä
    
    Text 0,p,+a
    Text 0,p2,+a2
    Text 0,p3,+a3
    Text 0,p4,+a4
    Text 0,p5,+a5
    Text 0,p6,+a6
    Text 0,p7,+a7
    
    
Next i

DrawScreen

x:
Key=WaitKey() //odottaa näppäintä
If Key=28 Then //"Jos näppäin=28 sitten" HUOM. näppäin 28 on ENTER
    Goto uusi //"Mene kohtaan uusi"
Else //"Muuten"
    Goto x //"Mene kohtaan x
EndIf //lopeta ehtolause
mahdollisesti vasta alkajatkin saavat enemmän selvää...
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Coolbasicin sisäiset tehtävät

Post by DatsuniG »

Jani wrote:Taas tämä vanha A4 mutta tällä kertaa toteutettu suurimmaksi osakseen muuttujilla

Code: Select all

p=0 //ensimmäisen numeron korkeussuunnan muuttuja on p
p2=20 //toisen p2
p3=40 //kolmannen p3
p4=60 //neljännen p4
p5=80 //viidennen p5
p6=100 //kuudennen p6
p7=120 //seitsemännen p7

Randomize Timer()

uusi:

For i=1 To 1

    a=Rand(1,49) //ensimmäinen numero asetetaan muuttujaan a
    a2=Rand(1,49) //toinen muuttujaan a2
    a3=Rand(1,49) //kolmas muuttujaan a3
    a4=Rand(1,49) //neljäs muuttujaan a4
    a5=Rand(1,49) //viides muuttujaan a5
    a6=Rand(1,49) //kuudes muuttujaan a6
    a7=Rand(1,49) //seitsemäs muuttujaan a7
    
    //Kirjoitetaan nyt nämä
    
    Text 0,p,+a
    Text 0,p2,+a2
    Text 0,p3,+a3
    Text 0,p4,+a4
    Text 0,p5,+a5
    Text 0,p6,+a6
    Text 0,p7,+a7
    
    
Next i

DrawScreen

x:
Key=WaitKey() //odottaa näppäintä
If Key=28 Then //"Jos näppäin=28 sitten" HUOM. näppäin 28 on ENTER
    Goto uusi //"Mene kohtaan uusi"
Else //"Muuten"
    Goto x //"Mene kohtaan x
EndIf //lopeta ehtolause
mahdollisesti vasta alkajatkin saavat enemmän selvää...
Tällaista tapaa ei kannata edes opetella. Ja kaiken lisäksi tuossa voi tulla samoja numeroita ^^
Hengität nyt manuaalisesti.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Coolbasicin sisäiset tehtävät

Post by Jani »

hmm... Mulla ei kyllä ole tullut...
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Coolbasicin sisäiset tehtävät

Post by Koodiapina »

Kyllä niitä tulee. Näkeehän sen jo koodista, jossa mitään lottonumeroihin liittyviä tarkastuksia ei tehdä.
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Coolbasicin sisäiset tehtävät

Post by MAVmaggot »

Oma versioni, tässäkin toki tulee samoja. Koodi on kommentoitu joten aloittelijat ymmärtävät ehkä jotain.

Code: Select all

For i=1 To 7 'toistetaan rivit nextiin asti 7 kertaa
    numero=Rand(1,39) 'arvotaan uusi numero
    Locate 15,i*15 'muutetaan tekstin paikkaa
    AddText Str(numero) 'tulostetaan numero
    DrawScreen 'piirretään näyttö
Next i 'se next
WaitKey 'odotetaan että nappia painetaan
Printillä olisi saanut 5 riviin, mutta aloittelijoiden on parempi oppia käyttämään addtextiä/textiä.
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: Coolbasicin sisäiset tehtävät

Post by Ozcar »

Edelleen, idea olisi varmaankin tarkistaa, ettei kahta samaa numeroa tule? Dim ja tarkistus loopissa on se paras tapa, ainakin aloittelijoille. Kerran kun sen periaatteen ymmärtää niin se on helppoa kuin heinänteko.
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Coolbasicin sisäiset tehtävät

Post by Character »

A3 lyhyempänä:

Code: Select all

aika=Timer()

Repeat

If Timer()>aika+500 Then
Text 0,0,"Toimiiko?"
EndIf

If Timer()>aika+1000 Then aika=Timer()

DrawScreen
Forever
Last edited by Character on Sun Nov 30, 2008 6:38 pm, edited 2 times in total.
Post Reply