Google Translate

Hungarian English French German Italian Portuguese Russian Spanish

Látogatók

1.png3.png9.png3.png8.png1.png8.png
Ma34
Tegnap52
Héten155
Hónapban506
Összesen1393818

4
Online

2020. július 08. szerda, 15:13

Legújabb hozzászólás

  • Astérix : Operation Getafix

    Tajti Dániel 2020.06.24 21:23
    Sziasztok Retro.Games.hu oldal kezelői! Azt szeretném kérdezni, nem tudjátok véletlenül az Astérix ...

    Bövebben...

     
  • Maniac Mansion

    Zerko 2016.07.17 08:37
    Kiváló bemutató, élvezet volt olvasni!

    Bövebben...

     
  • Turrican

    flexaplus 2015.09.16 02:32
    Miután elolvastam, a legtöbb témában egyet tudok érteni veled. Remélem nem kezdesz el majd úgy írni mint ...

    Bövebben...

Haladó - Program Struktúra

A DarkBasic Pro-ban sokféle programozási stílust használhatsz. Azonban a programokat az átláthatóság és könnyebb értelmezhetőség kedvéért érdemes előre meghatározott szabályok szerint írni.

Általános meggondolandó szabályok:

  • Egy sor egy parancs (utasítás, értékadás, más kód szerkezet). Ha egy sorba több parancsot írsz kettősponttal elválasztva, az esetleg megzavarhat másokat a kód értelmezésében.
  • Külső forrásokra támaszkodjon -e a program, vagy tartalmazza az összes kódot? Döntsön a projekt nagysága. Általában az egy adott problémakörre írt függvényeket érdemes külön fájlban tárolni, és utána importálni a központi forráshoz.
  • A jobb struktúrálás érdekében a program központi része legyen benne egy main() (vagy tetszőleges) nevű függvényben. Ezt meghívva, akár paramétereket is megadhatunk, amik befolyásolni fogják a program lefutását. Ha nem történt hiba a futás közben, legyen a visszatérő értéke 0. A visszatérő érték tehát a hiba kódja.
  • A központi rész után szokott lenni a hiba feldolgozó, és memória felszabadító rész. Ezután a program lefutottnak tekinthető és bezárul. (Törekedj arra, hogy kevés dolog legyen állandóan a memóriában. Amit már nem használ a program rögtön töröld)
  • A függvények, és alprogramok a forráskód végén legyenek!
  • Találj ki egy stílust a változónevek elnevezésére, és használd végig azt. Törekedj a rövid, és önmagát leíró nevek használatára (pl.: carParts(4).price , utalhat egy autó alkatrészeket tároló tömbre, és a price pedig az alkatrész árára. A car mint előtag, kíváló arra, hogy más kapcsolódó tömbökhöz is használd: carBody(1).name - karosszéria adatait tartalmazó tömb, név tulajdonsága.

Példa, egy pedáns, 6 jól elkülönülő részből álló, DarkBasic Pro kódra: 

Példa #1 - Négyzet rajzolás
1 ` \\ Négyzet rajzolás 1.0
2 ` // Írta: Goobe
3  
4 ` -- 1 - Típus definíciók --
5 TYPE pixel
6 x as integer
7 y as integer
8 ENDTYPE
9  
10 TYPE dimension
11 width as integer
12 height as integer
13 ENDTYPE
14  
15 TYPE rgbcolor
16 r As Byte ` \\ Az RGB színek három komponensből tevődnek össze, egyenként 0 - 255 ig terjedő értékben.
17 g As Byte ` \\ A byte pont ennyit képes tárolni!
18 b As Byte
19 ENDTYPE
20  
21 TYPE shapeRectangle
22 origin as pixel
23 size as dimension
24 color as rgbcolor
25 ENDTYPE
26  
27 ` -- 2 - Konstansok és változók --
28  
29 gosub loadErrorMessages
30 global numRect = 15 ` -- Itt mondhatod meg, hány négyzetet rajzoljon véletlenszerűen
31 global maxWidth = 100 ` -- A négyzetek maximum szélessége
32 global maxHeight = 100 ` -- A négyzetek maximum magassága
33  
34 ` -- 3 - Központi rész --
35  
36 mainError = main()
37  
38 ` -- 4 - Hiba kezelő rész --
39  
40 if mainError = 0
41 print "A program rendben lefutott."
42 waitForKey()
43 else
44 print "A program hibával leállt! | Hibakód (" + str$(mainError) + ") - " + errorMessages$(mainError)
45 endif
46  
47 END ` - Program bezárása
48  
49 ` -- 5 - Main függvény --
50  
51 FUNCTION main()
52  
53 RANDOMIZE TIMER()
54  
55 dim negyzetek(numRect) as shapeRectangle
56  
57 randNegyzetek()
58  
59 drawNegyzetek()
60  
61 mainReturn = 0
62 ENDFUNCTION mainReturn
63  
64 ` -- 6 - Függvények, alprogramok
65  
66 FUNCTION waitForKey()
67 print ""
68 print "Nyomjon meg egy billentyűt a folytatáshoz..."
69 suspend for key
70 ENDFUNCTION
71  
72 FUNCTION randNegyzetek()
73 for i = 1 to numRect
74 negyzetek(i).origin.x = rnd(screen width() - 1) + 1
75 negyzetek(i).origin.y = rnd(screen height() - 1) + 1
76 negyzetek(i).size.width = rnd(maxWidth - 1) + 1
77 negyzetek(i).size.height = rnd(maxHeight - 1) + 1
78 negyzetek(i).color.r = rnd(255)
79 negyzetek(i).color.g = rnd(255)
80 negyzetek(i).color.b = rnd(255)
81 next i
82 ENDFUNCTION
83  
84 FUNCTION drawNegyzetek()
85 for i = 1 to numRect
86 rectWidth = negyzetek(i).origin.x + negyzetek(i).size.width
87 rectHeight = negyzetek(i).origin.y + negyzetek(i).size.height
88 ink rgb(negyzetek(i).color.r, negyzetek(i).color.g, negyzetek(i).color.b), rgb(negyzetek(i).color.r, negyzetek(i).color.g, negyzetek(i).color.b)
89 box negyzetek(i).origin.x, negyzetek(i).origin.y, rectWidth, rectHeight
90 next i
91 ENDFUNCTION
92  
93 loadErrorMessages:
94 dim errorMessages$(2)
95 errorMessages$(1) = "Hiba leírása..."
96 errorMessages$(2) = "Hiba leírása..."
97 RETURN

Forráskód, és bináris letöltése (326 Kb)
 

Zene

Google keresés

Váltó

Digitális Táregység


Számrendszer

#=

IMDb Keresés

Kód

Karakter

Szín

Szín kódtábla

Webmaster: GoobeMaster
Érvényes XHTML és CSS
Minden jog fenntartva! ® 2010 - 2017
Jogtulajdonos: United Voxels Ltd. (United Kingdom)

Check Google Page Rank

Technikai háttér: