Informations sur: DAMIER

Publié par SFLPMEA le 19/12/2006

Description

DAMIER.BAS Source Qbasic Version 4.5. Constitution d'un damier avec déplacement de cercle. Début d'un programme de jeu de Sazuke83 complètement modifié par SFLPMEA

Code source (langage qbasic)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
' ***********************
' *    JEU du DAMIER    *  DAM04.BAS
' ***********************
' Ecrit par SFLPMEA sur une idée de sazuke83
    CLS : SCREEN 12: WINDOW SCREEN (1, 1)-(640, 480)
    OPTION BASE 1: DEFSTR A-Z
' ***** El‚ments modifiables (dans une certaine limite)
    L.C% = 30        ' ***** Dimension d'une case carrée du damier
    Nb.L% = 12       ' ***** Nombre de lignes du damier
    Nb.Col% = 19     ' ***** Nombre de colonnes
    Ec% = 3          ' ***** Intervalle/Ecart entre les cases
    Cc% = 13         ' ***** Couleur du contour des cases
    Nb.Cf% = 10       ' ***** Nombre de Cases Fixes
    Nb.Camo% = 12    ' ***** Nombre de Cases amovibles et déplaçables
    Ccamo% = 11      ' ***** Couleur des cases movibles
    Col.C% = 14      ' ***** Couleur de l'anneau Chasseur
    Nb.Rond% = 70    ' ***** Nombre de Ronds à Manger
    C.Rond% = 12     ' ***** Couleur
    IF Nb.Cf% + Nb.Camo% + Nb.Rond% + 1 > Nb.L% * Nb.Col% THEN
        SOUND 400, 36.4: LOCATE 10, 10: PRINT "C o m p l e t ! ! !": END
    END IF
' ***** Les DIM
    DIM Kase(Nb.Col%, Nb.L%)  AS STRING * 4 ' ***** Contenu du damier
        ' ***** Possibilités
            ' ***** "VIDE"
            ' ***** "FIXE"
            ' ***** "MOBI"
            ' ***** "MIAM"
            ' ***** "ROND"
    FOR C% = 1 TO Nb.Col%: FOR L% = 1 TO Nb.L%
        Kase(C%, L%) = "VIDE"
    NEXT L%, C%
    DIM Xp%(Nb.Col%) ' ***** Abscisse du Pixel central des cases
    DIM Yp%(Nb.L%)   ' ***** Ordonnée du pixel central des cases
    FOR I% = 1 TO Nb.Col%
        Xp%(I%) = Ec% + L.C% / 2 + (Ec% + L.C%) * (I% - 1)
    NEXT I%
    FOR I% = 1 TO Nb.L%
        Yp%(I%) = Ec% + L.C% / 2 + (Ec% + L.C%) * (I% - 1)
    NEXT
 
' ***** Dessin du damier
    L.C2% = L.C% / 2  ' ***** demi côté d'une case
    FOR X1% = 1 TO Nb.Col%
        X% = Xp%(X1%)
        FOR Y1% = 1 TO Nb.L%
            Y% = Yp%(Y1%)
            LINE (X% - L.C2%, Y% - L.C2%)-(X% + L.C2%, Y% + L.C2%), Cc%, B
        NEXT Y1%
    NEXT X1%
 
' ***** Positionnement de départ du cercle
    X.C% = Xp%(1): Y.C% = Yp%(Nb.L%)
    CIRCLE (X.C%, Y.C%), L.C2% - 2, Col.C%
    CIRCLE (X.C%, Y.C%), L.C2% - 8, Col.C%
    PAINT (X.C% - L.C2% + 3, Y.C%), Col.C%, Col.C%
    X.C.Pr% = X.C%: Y.C.Pr% = Y.C%
    Kase(1, Nb.L%) = "ROND"
 
    RANDOMIZE TIMER
' ***** Positionnement des dalles fixes
    ' ***** PREMIERE METHODE FOR .../... NEXT
    FOR I% = 1 TO Nb.Cf%
        C% = INT(RND * Nb.Col%) + 1
        L% = INT(RND * Nb.L%) + 1
          IF Kase(C%, L%) <> "VIDE" THEN
            I% = I% - 1
          ELSE
            X% = Xp%(C%): Y% = Yp%(L%)
            Couleur% = 7
              FOR I1% = 2 TO L.C2% - 2
                Couleur% = Couleur% + 1: IF Couleur% > 15 THEN Couleur% = 8
                LINE (X% - I1%, Y% - I1%)-(X% + I1%, Y% + I1%), Couleur%, B
              NEXT I1%
            Kase(C%, L%) = "FIXE"
          END IF
    NEXT I%
 
' ***** Positionnement des cases amovibles et déplaçables
    ' ***** DEUXIEME METHODE : DO   .../...   LOOP
    Nb% = 0
    DO
        Nb% = Nb% + 1
        C% = INT(RND * Nb.Col%) + 1
        L% = INT(RND * Nb.L%) + 1
          IF Kase(C%, L%) <> "VIDE" THEN
            Nb% = Nb% - 1
          ELSE
            X% = Xp%(C%): Y% = Yp%(L%)
            LINE (X% - L.C2% + 2, Y% - L.C2% + 2)-(X% + L.C2% - 2, Y% + L.C2% - 2), Ccamo%, BF
            CIRCLE (X%, Y%), 3, 0
            Kase(C%, L%) = "MOBI"
          END IF
    LOOP UNTIL Nb% >= Nb.Camo%
 
' ***** Positionnement des Ronds à 'manger'
    ' ***** TROISIEME METHODE : UTILISATION DU GOTO
    FOR I% = 1 TO Nb.Rond%
E01.OKUPE:
        C% = INT(RND * Nb.Col%) + 1
        L% = INT(RND * Nb.L%) + 1
            IF Kase(C%, L%) <> "VIDE" GOTO E01.OKUPE
        X.C% = Xp%(C%): Y.C% = Yp%(L%)
        CIRCLE (X.C%, Y.C%), L.C2% - 2, C.Rond%
        CIRCLE (X.C%, Y.C%), L.C2% - 8, C.Rond%
        PAINT (X.C% - L.C2% + 3, Y.C%), C.Rond%, C.Rond%
        Kase(C%, L%) = "MIAM"
    NEXT I%
    LOCATE 28, 10: PRINT "ET MAINTENANT ....."
    END
 
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,034 s - Crédits - Stats
1 connecté