Cours de Quick Basic PDS avancé:
composition de la page:
- comment faire un jeu
- ajouts de conaissances qui peuvent servir
Comment faire un jeu ?
je vais faire appel à un minimum de connaissances de programmation Qbasic si vous débarquez totalement, regardez d'abord la page "tutoriel Qbasic" de base pou apprendre.
et bien je vais faire un exemple pour vous montrer ce que ca pourrait donner, on va faire un pong.
pour commencer il faut initilialiser le programme et créer un menu (par exemple mais rappelons que l'on peu programmer comme on veut!)
on va commencer par initlialiser le mode graphique en 320*200 256 couleurs
voici le code du programme
téléchargez le ici et ouvrez le avec Qbasic
Connaissances qui peuvent servir:
Quick Basic PDS (Professional Developement System) dit Quick Basic Extended (versions 7 et plus) est la version pro de Qbasic. Elle permet d'utiliser des fonctions en plus et de choisir avec plus de précisions les options de compilation.
Connaissances requises:
Vous devez savoir déjà programmer des algorithmes en langage basic et connaître les structures de contrôle comme les boucles et les conditiions.
Si vous ne connaissez pas cela reportez vous au cours de base du Qbasic sur ce même site.
Qu'est ce qu'un flag ?:
Un flag est une variable qui permet de stocker un etat. Par exemple dans un programme la variable IsBlack serait egale a 1 ou a 0 pour dire si le curseur de la souris est actif ou non. (C'est le programmeur qui créé ses propres variables, ceci n'est qu'un exemple)
Ou alors c'est une variable qui permet de retouver plusieurs etats a la fois. Par exemple un par bit. C'est pour cela qu'on les utilisent avec des OU logiques (pour mettre a 1 des bits sans en mettre a 0, c'est a dire pour passer un etat) ou des ET logiques (pour désactiver un etat) et encore des ET logiques pour lire l'etat des bits indépendamment.
Par exemple
Flag vaut 1+2+8+64 signifie que les bits 0 (1er bit), 1, 3 et 6 sont activés.
Pour lire l'etat du bit 4 il faut faire:
Flag AND 2^4
2^4 vaut 16 donc pour activer ce bit il faudrait faire:
Flag = Flag OR 16
De cette maniere on peut stocker plusieurs etats a la fois.
Par exemple pour un fichier:
Bit 0 : lecture seule
Bit 1: caché
Bit 2: systeme
Bit 3: nom de volume
Bit 4: sous repertoire
Bit 5: archive
Dans ce cas la le fag qui prendrait cette valeur binaire:
00100110 soit 1 + 2 + 32 = 35 serait un fichier systeme, caché et archive.
Les interruptions DOS:
On les appellent à l'aide de:
Call Interrupt (numero, registres d'entrees, registres de sorties)
Exemple:
'$include:'qbx.bi'
dim entree as RegType
dim sortie as RegType
entree.ax = 0
Call interrupt (&h33, entree, sortie)
Entree.ax = 1
Call interrupt (&h33, entree, sortie)
Ce programme appelle 2 fonctions de l'interruption DOS 33h (la souris).
Ax = 0 c'est la 1ere fonction, elle initialise la souris
Ax = 1 affiche le pointeur (un carré en mode texte, un pointeur en mode graphique)
Ax symbolise un registre processeur 16 bits.
Ou on y stocke une valeur avant l'appeler l'interruption cette valeur correspond au numero de la fonction.
Dans les sorties souvent les interruptions y passerons des valeurs de sorties, par exemple si la fonction a reussi ou non.
Récupérer tout les fichiers d'un repertoire:
Il existe une fonction dans QBX qui utilise l'interruption 21h du DOS (&H21) et les fonctions FindFirst et FindNext. Cepandant elle ne permet pas le choix des flags (arguments pour les types de fichiers) mais qui est deja pas mal.
Cette fonction c'est Dir$.
Quand on fait
X$ = dir$("*.*")
On a dans X$ le nom du 1er fichier trouvé par FindFirst qui correspond au masque *.*
ensuite si on rappelle
X$ = Dir$
on a alors dans X$ le nom du fichier suivant qui correspond au meme masque.
de cette maniere:
x$ = dir$("*.*")
if x$ = "" then end
do
a = a + 1
x$ = dir$
loop until x$ = ""
print "le rep contient:"; a; " fichiers."
ecrira combien le repertoire courant contient de fichiers.
Enregistrer un bout d'ecran:
il faut utiliser la technique du Get Put graphique. Get va enregistrer dans un tableau un carré d'ecran et Put va le reposer en efectuant ou non une operation booléenne que chacun des quartets (en 4 bits = 16 couleurs ) ou octets (en 8 bits = 256 couleurs).
exemple:
DIM ecran(632) AS INTEGER
SCREEN 12
LINE (0, 0)-(100, 100), 14
CIRCLE (20, 20), 15, 4
LINE (90, 0)-(250, 60), 5, BF
GET (10, 10)-(41, 41), ecran
PUT (100, 10), ecran, PSET
PUT (140, 10), ecran, OR
PUT (180, 10), ecran, XOR
vous constatez que on a capturé un bout d'ecran et ensuite posé sur le rectangle jaune de 3 manieres differentes.
le bout d'ecran est stocké dans un tableau de taille que l'on doit calculer,
voici un extrait de l'aide, pour plus d'infos, consultez la:
Usage Notes
Lightness1024! ProgrammatO 30/09/01