Diagrammityökalu

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Diagrammityökalu

Post by DJ-Filbe »

Tein tämän lähinnä äidinkielen projektityötä varten, kun M$ :n yhteensopimattomien ohjelmien käyttö ei innostanut.

Kirjoitat diagrammitiedoston näin:

Code: Select all

[OTSIKKO]
Yhteensä [riville voi laittaa mitä vaan]
[diagrammin palkkien maksimiarvo]
[ekan palkin nimi]
[ekan palkin arvo]
[tokan palkin nimi]
[tokan palkin arvo]
[...jne...]
Esim.

Code: Select all

TV :n inhokkisarjat, kaikki ikäluokat
Yhteensä
23
Kauniit ja rohkeat
14
Salkkarit
10
Frendit
5
Big Brother
4
Idols
4
Talent
3
Frasier
3
CSI
2
Futurama
2
Simpsonit
1
Pasila
1
Avara luonto
1
House
1
diaggg.png
diaggg.png (23.51 KiB) Viewed 4575 times
Ohjelman sorsa:

Code: Select all

SCREEN 1200,600
ClsColor 255,255,255
Color 0,0,0
DrawScreen
DrawScreen
//Color 0,0,0

Global väri
Global pX
Global bw //palkin leveys
bw=40

px = 50
väri=1

Global dscale
dscale=400

Global dbottomy
dbottomy = 400



Type tdiagrammi
   Field a
   Field m
   Field t$
EndType

a=OpenToRead(haetiedosto())
Global otsikko$
otsikko=ReadLine(a)
tmp=ReadLine(a)
diamax=ReadLine(a)

maxvalue=0

Repeat
   d.tdiagrammi = New(tdiagrammi)
   d\t = ReadLine(a)
   d\a = ReadLine(a)
   maxvalue=Max(maxvalue, d\a)
   d\m=diamax
Until EOF(a)
CloseFile a


Function diagrammi(x,y,arvo,maksimi,txt$, scale=300)
   
   väri = -väri
   If väri=1 Then
      Color 50,100,150
   Else
      Color 150,100,50
   EndIf
   
   Box x, y-(scale*arvo/maksimi), bw, scale*arvo/maksimi
   
   
   Color 0,0,0
   If väri=1 Then Text x+(bw/2)-(TextWidth(txt)/2), y+40, txt
   If väri=-1 Then Text x+(bw/2)-(TextWidth(txt)/2), y+20, txt
   Text x+(bw/2)-(TextWidth(arvo)/2), y, arvo
   
   Text x+(bw/2)-(TextWidth((arvo*100/maksimi)+"%")/2), y+60, (arvo*100/maksimi)+"%"
   
   px=px+70
EndFunction
font1=LoadFont("Arial", 36)
font2=LoadFont("Arial", 20)

kx=50

t=0

Repeat

      
   If t=0 Then
      t=1
      kx=10
      dbottomy=10
      dscale=10
   ElseIf t=1 Then
      If dbottomy < 400 Then
         dbottomy +5
      Else
         If dscale < 400 Then
            dscale +5
         Else
            If kx < 50 Then
               kx+5
            Else
               t=2
            EndIf
         EndIf
      EndIf
   EndIf
   
   
   väri=1
   px=kx
   
   SetFont font1
   Text 0,0, otsikko
   SetFont font2
   
   For i=0 To maxvalue
      Line 0,dbottomy-(dscale*i/diamax),ScreenWidth(),dbottomy-(dscale*i/diamax)
      Color 255,255,255
      Line kx-20,dbottomy-(dscale*i/diamax), kx-20+TextWidth(i),dbottomy-(dscale*i/diamax)
      Color 0,0,0
      Text kx-20,dbottomy-(dscale*i/diamax)-10,i
   Next i
   
   
   For d.tdiagrammi = Each tdiagrammi
      diagrammi(px,dbottomy, d\a, d\m, d\t, dscale)
   Next d

   dscale = dscale + RightKey()-LeftKey()
   dbottomy = dbottomy + DownKey()-UpKey()
   kx=kx+KeyDown(cbkeyD)-KeyDown(cbkeyA)
   bw=bw+KeyDown(cbkeyW)-KeyDown(cbkeyS)
   If bw < 5 Then bw=5
   
   DrawScreen

Forever


Function haetiedosto$()
   If FileExists(CommandLine()) Then Return CommandLine()
   
   Repeat
      f$=Input("Hae diagrammitiedosto: ")
      DrawScreen
   Until KeyUp(28)
   CloseInput
   
   If FileExists(f) Then
      Return f
   Else
      MakeError "Tiedostoa "+f+" ei löytynyt tai tiedostonimessä välilyönti!"
   EndIf
EndFunction
Attachments
DIAGRAMMITYÖKALU.rar
(586.74 KiB) Downloaded 318 times
Last edited by DJ-Filbe on Sat May 21, 2011 8:56 am, edited 1 time in total.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Diagrammityökalu

Post by Latexi95 »

DJ-Filbe wrote:Tein tämän lähinnä äidinkielen projektityötä varten, kun M$ :n yhteensopimattomien ohjelmien käyttö ei innostanut.
Öh... OpenOffice?
Mutta ihan siistin näkönen diagrammihan tuolla näyttää tulevan. Mutta kyllä taidan silti pysyä kunnon taulukkolaskenta ohjelmissa... :D
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Diagrammityökalu

Post by DJ-Filbe »

Latexi95 wrote:
DJ-Filbe wrote:Tein tämän lähinnä äidinkielen projektityötä varten, kun M$ :n yhteensopimattomien ohjelmien käyttö ei innostanut.
Öh... OpenOffice?
Mutta ihan siistin näkönen diagrammihan tuolla näyttää tulevan. Mutta kyllä taidan silti pysyä kunnon taulukkolaskenta ohjelmissa... :D
Koulun koneelle paha asentaa ouppen-ohovisea :D
EDIT:

Oliko toi avoimen lähdekoodin juttu joku vinkki?

Code: Select all

koodi laitettu aloitusviestiin
[/edit]
Last edited by DJ-Filbe on Sat May 21, 2011 8:56 am, edited 1 time in total.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Diagrammityökalu

Post by Latexi95 »

DJ-Filbe wrote:
Latexi95 wrote:
DJ-Filbe wrote:Tein tämän lähinnä äidinkielen projektityötä varten, kun M$ :n yhteensopimattomien ohjelmien käyttö ei innostanut.
Öh... OpenOffice?
Mutta ihan siistin näkönen diagrammihan tuolla näyttää tulevan. Mutta kyllä taidan silti pysyä kunnon taulukkolaskenta ohjelmissa... :D
Koulun koneelle paha asentaa ouppen-ohovisea :D
EDIT:

Oliko toi avoimen lähdekoodin juttu joku vinkki?

Code: Select all

koodia...
[/edit]
Ei vaan tarkoitin, että OpenOfficella saa Wordin, Exelin ja ym. tiedostot auki, niin että niitä voi kotona muokata...
Ja kyllä kun "esimerkkit ja tutorialit" alueelle postaa niin lähdekoodi kannattaa laittaa mukaan.
Post Reply