Pyydä täällä harjoitustehtäviä

Voit pyytää apua ohjelmointiongelmiin täältä.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

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

Post by Koodiapina »

Tee brainfuck-tulkki. Homma voi ensin vaikuttaa vaikealta, mutta oikeasti kyseessä on täysin aloittelijalle sopiva tehtävä :)
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

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

Post 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
Last edited by jaahas on Sun Feb 21, 2010 7:17 pm, edited 1 time in total.
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

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

Post by Ilkka »

Keksiskö joku jotain, 1 - 10 tunnissa tehtävää ohjelmaa/peliä ( Mielummin peliä. ) minkä voisin tehdä. Ja Galgometrihän ilmoitti luvuksi 3.75
Image
User avatar
Knoy
Active Member
Posts: 187
Joined: Fri Feb 12, 2010 10:50 pm

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

Post 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ä.
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

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

Post by jaahas »

olisko mulle jotain parin tunnin tehtävää algometristä 1 arvosanaksi (mieluiten tehtäväks joku ohjelma)
User avatar
Knoy
Active Member
Posts: 187
Joined: Fri Feb 12, 2010 10:50 pm

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

Post 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
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

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

Post 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ä.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

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

Post 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
User avatar
Knoy
Active Member
Posts: 187
Joined: Fri Feb 12, 2010 10:50 pm

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

Post 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
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

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

Post by DJ-Filbe »

Minulle joku ehkä musiikkiin liittyvä tehtävä mielellään. Galgon tulos vaivaiset 3,25....
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

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

Post 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.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
User avatar
wilizucoder
Member
Posts: 81
Joined: Sat Sep 08, 2007 11:24 pm
Location: Espoo
Contact:

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

Post 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.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

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

Post 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...
Image
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

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

Post 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.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

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

Post 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]
Last edited by Jani on Mon Mar 15, 2010 5:14 am, edited 1 time in total.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

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

Post 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.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

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

Post by DatsuniG »

Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.
Hengität nyt manuaalisesti.
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

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

Post 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.
I see the rainbow rising
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

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

Post 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]
Last edited by DatsuniG on Sat Mar 20, 2010 7:37 am, edited 4 times in total.
Hengität nyt manuaalisesti.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

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

Post 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.
Image
Post Reply