Page 5 of 6

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 12:44 pm
by Koodiapina
Tee brainfuck-tulkki. Homma voi ensin vaikuttaa vaikealta, mutta oikeasti kyseessä on täysin aloittelijalle sopiva tehtävä :)

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 6:44 pm
by jaahas
Grandi wrote:Tee brainfuck-tulkki. Homma voi ensin vaikuttaa vaikealta, mutta oikeasti kyseessä on täysin aloittelijalle sopiva tehtävä :)
en osaa tehdä tulkkia :(
haluan tehtäväks jonku aika helpon ohjelman arvosanani on 1

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 6:55 pm
by Ilkka
Keksiskö joku jotain, 1 - 10 tunnissa tehtävää ohjelmaa/peliä ( Mielummin peliä. ) minkä voisin tehdä. Ja Galgometrihän ilmoitti luvuksi 3.75

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 7:50 pm
by Knoy
Tetris...?

Laitat hienoja effektejä mukaan.

Ylösnuoli: Kääntää blockia
Alas: nopeuttaa blockkia
Sivutnuolet: liikuttaa

Erikois räjähdykset jos koko rivi on samaa väriä ja samalla boonus pisteet.
Seuraava palikka näkyy ennalta...

Tuollaista peliä.

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 8:38 pm
by jaahas
olisko mulle jotain parin tunnin tehtävää algometristä 1 arvosanaksi (mieluiten tehtäväks joku ohjelma)

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 8:56 pm
by Knoy
Grandi wrote:Tee funktio joka piirtää ruudulle minkä tahansa kokoisen suorakulmion jossain kulmassa 0-360. Ensimmäiset parametrit, x ja y, määrittävät suorakulmion keskipisteen. Rect360 (x, y, w, h, Angle)

Tehtävä on siis koodattava line-komennon avulla. Kuvien, objektien tai muiden kikkojen käyttäminen olisi vain itsensä pettämistä.
Tuli tylsää...
Neliöt ovat suorakulmiota....

Code: Select all

Angle=Rand(0,359)

Repeat
    If GetKey() Then
        Ong=150
        Angle=Rand(0,359)
    EndIf
    Neliö(Angle)
    Text 0,0,"Angle is:"+Angle

    DrawScreen
Forever

Function Neliö(Angle)
    Line 200+Cos(angle)*20,150-Sin(angle)*20,150+Cos(angle-90)*20,150-Sin(angle-90)*20
    Line 150+Cos(angle-90)*20,150-Sin(angle-90)*20,150+Cos(angle-180)*20,100-Sin(angle-180)*20
    Line 150+Cos(angle-180)*20,100-Sin(angle-180)*20,200+Cos(angle+90)*20,100-Sin(angle+90)*20
    Line 200+Cos(angle+90)*20,100-Sin(angle+90)*20,200+Cos(angle)*20,150-Sin(angle)*20
    Return Angle
EndFunction

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 9:44 pm
by Koodiapina
Ei toimi oikein. Jos haluat nähdä toimivan ratkaisun, katso tänne. Tuokin tosin vain neliöille.
jaahas wrote:olisko mulle jotain parin tunnin tehtävää algometristä 1 arvosanaksi (mieluiten tehtäväks joku ohjelma)
Kokeile CoolBasicin manuaalin tehtäväosion helppoja tehtäviä.

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 10:02 pm
by koodaaja
Itse löysin tällaisen kovon kätköistä - näyttäisi toimivan kaksiulotteisen pyöritysmatriisin avulla.

Code: Select all

Function drawbox(x, y, w, h, ang#)
    cw = Cos(ang#)*w/2.0: ch = Cos(ang#)*h/2.0: sw = Sin(ang#)*w/2.0: sh = Sin(ang#)*h/2.0
    
    Line x + cw - sh, y + sw + ch, x - cw - sh, y - sw + ch
    Line x - cw - sh, y - sw + ch, x - cw + sh, y - sw - ch
    Line x - cw + sh, y - sw - ch, x + cw + sh, y + sw - ch
    Line x + cw + sh, y + sw - ch, x + cw - sh, y + sw + ch
EndFunction

w = 40
h = 30

Repeat
    w = w + (RightKey()-LeftKey())
    h = h + (UpKey()-DownKey())
    ang = wrapangle(ang + (MouseDown(2)-MouseDown(1)))
    
    drawbox(MouseX(), MouseY(), w, h, ang)
    DrawScreen
Forever

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 21, 2010 11:19 pm
by Knoy
Grandi wrote:Ei toimi oikein. Jos haluat nähdä toimivan ratkaisun, katso tänne. Tuokin tosin vain neliöille.
jaahas wrote:olisko mulle jotain parin tunnin tehtävää algometristä 1 arvosanaksi (mieluiten tehtäväks joku ohjelma)
Kokeile CoolBasicin manuaalin tehtäväosion helppoja tehtäviä.
:D En tiennyt äsken mikä oli wrapangle... =P Laitan omaani toimimaan juuri joten en katso tuota... Muistaa paremmin miten komennot toimivat jos koodaa itse...

Edit:
Ei tässä taidettu wrapanglea tarvitakkaan no nyt toimii omani.

Code: Select all

Angle=Rand(0,359)

Repeat
    If GetKey() Then
        Ong=150
        Angle=Rand(0,359)
    EndIf
    Neliö(angle)
    Text 0,0,"Angle is:"+Angle

    DrawScreen
Forever

Function Neliö(angle)
    Color 255,0,0
    Line 200+Cos(WrapAngle(angle))*20,150-Sin(WrapAngle(angle))*20,200+Cos(WrapAngle(angle-90))*20,150-Sin(WrapAngle(angle-90))*20
    Color 0,255,0
    Line 200+Cos(WrapAngle(angle-90))*20,150-Sin(WrapAngle(angle-90))*20,200+Cos(WrapAngle(angle-180))*20,150-Sin(WrapAngle(angle-180))*20
    Color 255,0,255
    Line 200+Cos(WrapAngle(angle-180))*20,150-Sin(WrapAngle(angle-180))*20,200+Cos(WrapAngle(angle+90))*20,150-Sin(WrapAngle(angle+90))*20
    Color 0,0,255
    Line 200+Cos(WrapAngle(angle+90))*20,150-Sin(WrapAngle(angle+90))*20,200+Cos(WrapAngle(angle))*20,150-Sin(WrapAngle(angle))*20
    Return Angle
EndFunction 
Edit2:
Ohhoh kummasti ovat samanlaisia nuo funktiot... Noh samaa asiaa niillä tehdään...

Tässä on sitten hieno tapa käyttää tätä funktiota... Ja kaikki vielä tylsyyttäni yhdellä rivillä...

Code: Select all

Size=2: Repeat: Angle=WrapAngle(Angle+4): For i = 1 To 87: plus+1: sizer+2 :Neliö(angle+plus,size*sizer): Next i: Plus = 0: Sizer =0: DrawScreen: Forever: Function Neliö(angle,size): Color 135,135,135 : Line 200+Cos(WrapAngle(angle))*Size,150-Sin(WrapAngle(angle))*Size,200+Cos(WrapAngle(angle-90))*Size,150-Sin(WrapAngle(angle-90))*Size: Color 255,0,0: Line 200+Cos(WrapAngle(angle-90))*Size,150-Sin(WrapAngle(angle-90))*Size,200+Cos(WrapAngle(angle-180))*Size,150-Sin(WrapAngle(angle-180))*Size: Color 135,135,135: Line 200+Cos(WrapAngle(angle-180))*Size,150-Sin(WrapAngle(angle-180))*Size,200+Cos(WrapAngle(angle+90))*Size,150-Sin(WrapAngle(angle+90))*Size: Color 255,0,0: Line 200+Cos(WrapAngle(angle+90))*Size,150-Sin(WrapAngle(angle+90))*Size,200+Cos(WrapAngle(angle))*Size,150-Sin(WrapAngle(angle))*Size: Return Angle: Return Size: EndFunction

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 28, 2010 2:45 pm
by DJ-Filbe
Minulle joku ehkä musiikkiin liittyvä tehtävä mielellään. Galgon tulos vaivaiset 3,25....

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Feb 28, 2010 3:31 pm
by otto90x
Tee musiikkisoitin, joka pystyy hakemaan käyttäjän valitsemasta kansiosta kaikki musiikkitiedostot ja listaamaan ne näytölle siten että listaa voi vierittää. Kappaleita voi soittaa painamalla kappaleen nimeä. Jos entinen kappale on vielä soimassa, tapahtuu kappaleen vaihto sulavasti ristiinhäivyttäen. Musiikin voimakkuutta voi säätää niinkuin vasemman ja oikean kanavan balanssia.

Re: Pyydä täällä harjoitustehtäviä

Posted: Wed Mar 03, 2010 5:40 pm
by wilizucoder
Voisko joku keksiä mulle harjotustehtävän, mielellään joku peli? Oma tasoni on 1-2, eli typet, muuttujat, ja melkeen kaikki cb-manuaalin perusjutut on hallussa lukuun ottamatta taulukoita ja funktioita. Joku sellanen tehtävä vois olla kiva, jossa joutuu käsittelemään suuria massoja, esim. vihuja.

Re: Pyydä täällä harjoitustehtäviä

Posted: Wed Mar 03, 2010 5:55 pm
by phons
Tee ohjelma joka lukee tiedostosta taulukkoon kaikki rivit funktiossa ja funktio palauttaa 1:sen jos onnistui, muuten 0.

Edit: Suuret massat = Suuri rivien määrä tiedostossa...

Re: Pyydä täällä harjoitustehtäviä

Posted: Wed Mar 03, 2010 6:22 pm
by otto90x
Kiljulan kiljutehtaalla on 6 työnjohtajaa, 30 työläistä ja 50 orjaa. Työnjohtajat saavat palkkaa 5000€/kk, työläiset 2000€/kk ja orjat 10€/kk.

Kun taloustaantuma iskee ja Kiljulan kiljutehdas päättää lopettaa toimintansa. Vallitsevien työehtosopimusten puitteissa kutakin työnjohtajaa kohtaan voi olla maksimissaan viisi työläistä ja kullakin työläisellä voi olla olla maksimissaan viisi orjaa palveluksessaan. Orjalain mukaan orjia voidaan irtisanoa kuitenkin vain kymmenen kuukaudessa ja heille tulee maksaa irtisanomisrahaa 4€/orja. Kuukaudessa irtisanottavien työläisten määrän ylittäessä viiden joudutaan jokaisesta irtisanottavasta työläisestä maksamaan 5000€ sakkomaksu. Irtisanottaville työläisille pitää myös maksaa 50% seuraavan kuun palkasta. Työläiset ja orjat tekevät kukin 100€ arvoisen työpanoksen päivittäin. Työnjohtajat vain istuvat kahvilla.

Piirrä pylväsdiagrammi, joka näyttää Kiljulan kiljutehtaan kuukausittaiset menot, tulot ja irtisanottavat työnjohtajat, työläiset ja orjat, kun Kiljulan kiljutehdas haluaa tehdä mahdollisimman hyvää tulosta viimeiseen saakka.

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Mar 14, 2010 5:34 pm
by Jani
Haluaisin jonkun muistipaloihin/DLL:iin liittyvän harjoitustehtävän. Toki muukin kelpaa.
Galgometri antoi 8.0 pistettä.
EDIT:

otto90x wrote:Tee pulmakulman tapainen peli, jossa on paloja voi järjestellä 6x10 kokoiseen ruudukkoon ja pyörittää 90-astetta kerrallaan. Et saa käyttää CoolBasicissa valmiina olevia taulukko- tai tyyppikokoelma rakenteita vaan kaikki palojen muotoon, asentoon ja paikkaan liittyvä tieto pitää tallentaa muistipaloihin tai muihin muuttujiin. Paloja tulee voida liikuttaa (myös) hiirellä ja ennen palan asettamista paikoilleen pitää antaa pelaajalle tieto siitä voiko palan asettaa siihen kohtaan esimerkiksi piirtämällä palan oletettuun paikkaan punaiseksi värjätty haamupala. Tässä vielä palojen muodot selkeässä kuvassa.
Tää tuntuu hauskalta! Alan tekeen tuota koulun jälkeen (tai sitten jatkan Timang3t:In koodausta).[/edit]

Re: Pyydä täällä harjoitustehtäviä

Posted: Sun Mar 14, 2010 8:40 pm
by otto90x
Tee pulmakulman tapainen peli, jossa on paloja voi järjestellä 6x10 kokoiseen ruudukkoon ja pyörittää 90-astetta kerrallaan. Et saa käyttää CoolBasicissa valmiina olevia taulukko- tai tyyppikokoelma rakenteita vaan kaikki palojen muotoon, asentoon ja paikkaan liittyvä tieto pitää tallentaa muistipaloihin tai muihin muuttujiin. Paloja tulee voida liikuttaa (myös) hiirellä ja ennen palan asettamista paikoilleen pitää antaa pelaajalle tieto siitä voiko palan asettaa siihen kohtaan esimerkiksi piirtämällä palan oletettuun paikkaan punaiseksi värjätty haamupala. Tässä vielä palojen muodot selkeässä kuvassa.

Re: Pyydä täällä harjoitustehtäviä

Posted: Fri Mar 19, 2010 7:08 pm
by DatsuniG
Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.

Re: Pyydä täällä harjoitustehtäviä

Posted: Fri Mar 19, 2010 9:56 pm
by kaneli2000
DatsuniG wrote:Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.
Tyyppeihin: ota joku wanha koodisi ja tee kaikesta mahdollisesta tyypein käsiteltävää. Ei kovin käytännöllistä, mutta opettavaista.

Re: Pyydä täällä harjoitustehtäviä

Posted: Fri Mar 19, 2010 10:55 pm
by DatsuniG
kaneli2000 wrote:
DatsuniG wrote:Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.
Tyyppeihin: ota joku wanha koodisi ja tee kaikesta mahdollisesta tyypein käsiteltävää. Ei kovin käytännöllistä, mutta opettavaista.
Ajattelin hieman tyyppikokoelmien kehittyneempää käyttöä, kuten Converttointegeriä ja Converttotypeä ja näiden kahden kanssa muistipalojen hyödyntämistä. Kiitos kuitenkin ehdotuksesta.
EDIT:

Thx phons, aloittelenkin koodaamaan tuota.

EDIT:

Jos jotakuta kiinnostaa kuinka tein tämän harjoituksen, niin spoilerin alta löytyy koodia.

Code: Select all

Global mem As Integer

Const ITEM_AMOUNT = 30
mem = MakeMEMBlock(40)                              

Type LISTED_VALUES
    Field value As Integer
EndType 

RandomizeValues()
SortValues()
ListValues()
WaitKey

Function ListValues()
    For i = 1 To 9 Step 2
        printing.LISTED_VALUES = ConvertToType(PeekInt(mem, i * 4))
        Print printing\value
        Delete printing
    Next i 
EndFunction 

Function SortValues()
    For i = 0 To 9                                
        PokeInt mem, i * 4, -1
    Next i
    For add.LISTED_VALUES = Each LISTED_VALUES
        valueset = 0
        For i = 0 To 9 Step 2
            If add\value > PeekInt(mem, i * 4) And valueset = 0 Then 
                For a = i To 9 Step 2
                    If valueset Then 
                        If PeekInt(mem, a * 4) < ValueHelper Then 
                            ValueHelper2 = PeekInt(mem, a * 4)
                            HandleHelper2 = PeekInt(mem, (a + 1) * 4)
                            PokeInt mem, a * 4, ValueHelper
                            PokeInt mem, (a + 1) * 4, HandleHelper
                            ValueHelper = ValueHelper2
                            HandleHelper = HandleHelper2
                        EndIf 
                    ElseIf add\value > PeekInt(mem, a * 4) Then 
                        valueset = 1
                        ValueHelper = PeekInt(mem, a * 4)
                        HandleHelper = PeekInt(mem, (a + 1) * 4)
                        PokeInt mem, a * 4, add\value
                        PokeInt mem, (a + 1) * 4, ConvertToInteger(add)
                    EndIf 
                Next a
            EndIf 
        Next i
    Next add
EndFunction 
            
Function RandomizeValues()
    For add.LISTED_VALUES = Each LISTED_VALUES
        Delete add
    Next add
    For i = 0 To ITEM_AMOUNT - 1
        add.LISTED_VALUES = New(LISTED_VALUES)
        add\value = Rand(ITEM_AMOUNT ^ 2)
    Next i
EndFunction 
[/edit]

Re: Pyydä täällä harjoitustehtäviä

Posted: Fri Mar 19, 2010 10:57 pm
by phons
DatsuniG wrote:Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.
Koska tasosi on noin korkea haluat selvästi jotain vaikeaa.. Noh. Tee tyypeillä ja muistipaloilla systeemi jossa on funktio joka listaa muistipalaan viiden kärjen tyypeistä luettuna(eli kenellä on korkein numero fieldissä value menee musitipalikan kohtaan 1 kakkonen kohtaan 2 jne.) ja toinen funktio joka sitten lukee ne sieltä muistipalikasta ja kirjoittaa näytölle.

Edit: DatsuniG, ajattelinkin jotain tuollaista. Itse muuten olen kokenut hyödylliseksi ja käytän aina kun tarvis.