Comme dans mes autres petits projets abandonnés j'essaie de faire un petit "game engine" (un peu prétentieux car c'est très simple et rudimentaire).
Dans un premier fichier pour tester un personnage en pixel art j'ai afficher les lignes une à une voir pixel par pixel. J'ai essayer de faire les choses proprement en définissant les couleurs au début, x et y sont centrer sur le personnage et 2 fonctions d'affichages.
- Code: Select all
from ti_system import *
from ti_draw import *
from time import *
from sys import exit
red = (255,58,58)
yellow = (255,255,0)
belge = (255,222,140)
blue = (91,200,242)
dark = (0,0,0)
x,y = 150,110
def draw_background():
use_buffer()
set_color(red)
fill_rect(0,0,318,220)
def draw_player():
use_buffer()
set_color(dark)
#
draw_line(x-4,y-10,x+4,y-10)
draw_line(x-5,y-9,x-5,y-9)
draw_line(x+5,y-9,x+5,y-9)
draw_line(x-7,y-8,x-6,y-8)
draw_line(x+6,y-8,x+6,y-7)
draw_line(x-7,y-7,x-7,y-7)
draw_line(x+7,y-6,x+7,y-2)
draw_line(x-8,y-6,x-8,y-2)
draw_line(x-10,y-2,x-10,y-2)
draw_line(x-9,y-1,x-9,y)
draw_line(x-8,y+1,x-8,y+1)
draw_line(x-7,y+2,x-7,y+3)
draw_line(x-6,y+4,x-6,y+4)
draw_line(x+9,y-2,x+9,y-2)
draw_line(x+8,y-1,x+8,y)
draw_line(x+7,y,x+7,y+1)
draw_line(x+6,y+2,x+6,y+3)
draw_line(x+5,y+4,x+5,y+4)
draw_line(x+6,y+5,x+6,y+5)
draw_line(x+7,y+6,x+7,y+6)
draw_line(x+8,y+6,x+8,y+9)
draw_line(x+7,y+9,x+7,y+9)
draw_line(x+6,y+8,x+6,y+8)
draw_line(x+5,y+7,x+4,y+7)
draw_line(x+5,y+7,x+5,y+8)
draw_line(x+6,y+8,x+6,y+10)
draw_background()
draw_player()
Comme je "draw" toutes les lignes et pixels un par un je me demandais si il était possible de passer par une matrice (12 lignes et 20 colonnes au hasard). Dans chaque indices indiquer la couleur du pixel à "draw" ex : [0, red, yellow, blue...., 0, 0]. Car sinon je doit changer de couleur pour chaque nouvelles lignes ou pixels.
J'ai ensuite créé une deuxième page pour tester la possibilité des déplacement avec un personnage simple. Un début de game_loop, pipeline_draw... Parce qu'avant de faire le graphisme le moteur doit être fonctionnel.
J'avais mis dans la game loop tout le bout de code de la fonction get_input et j'ai créer cette fonction pour que ça soit plus claire. Mais une fois dans cette fonction j'ai l'erreur suivante :
File "C:\Users\arihe\AppData\Roaming\Texas Instruments\TI-Nspire CX CAS Student Software\python\doc2\characte_test.py", line 43, in <module>
File "C:\Users\arihe\AppData\Roaming\Texas Instruments\TI-Nspire CX CAS Student Software\python\doc2\characte_test.py", line 17, in get_inputNameError: local variable referenced before assignment
J'ai essayer de me renseigner sur cette erreur mais je pensais avoir déclarer la variable avant de la lire dans mon programme.
- Code: Select all
from time import *
from ti_system import *
from ti_draw import *
from sys import exit
x=159
y=110
game_loop= True
key = "test"
def draw_background():
set_color(255,60,150)
fill_rect(0,0,318,220)
def get_input():
key=get_key()
if key=="6":
x=x+15
if key=="4":
x=x-15
if key=="7":
exit()
if key=="9":
game_loop=False
def draw_character():
use_buffer()
set_color(150,130,160)
fill_rect(x,y,16,16)
set_color(45,240,100)
fill_rect(x-4,y+16,23,30)
set_color(60,60,240)
fill_rect(x-4,y+46,10,20)
fill_rect(x+9,y+46,10,20)
paint_buffer()
def draw_pipeline():
draw_background()
draw_character()
draw_pipeline()
while game_loop==True :
get_input()
if get_key()=="8":
game_loop=False
draw_pipeline()
Est ce que quelqu'un pourrait m'éclaircir sur le sujet ?
Une fois les déplacement du personnage fait je souhaiterais ajouter des sprites d'objet et des widgets.
Est ce que la POO serait utile ici ? Utiliser des class sur les différents type d'éléments à afficher ?Comment me renseigner pour l'utiliser proprement ?
Comme il y a pas mal de partie différentes dans mon programme est ce qu'il serait utile de "fractionner" le fichier ? Un avec les dessins des sprites, les widgets... Et si oui comment gérer ces fichiers dans la calculatrice ?
Ce projet de code sert à illustrer le problème du collectionneur de vignettes (somme d'espérances de variables aléatoires suivant une loi géométrique). Une question que je me suis réellement poser pour résoudre une interrogation sur des probas d'un jeu vidéo et ça me permettra de gagner quelques minutes en abordant du python.
Je ne finirai peut être pas ce projet s'il est trop ambitieux même si il me semble faisable.
J'imagine qu'il y a beaucoup de questions et que mon post est excessivement long j'en suis désolé.
Mais merci si quelqu'un à le temps de répondre à quelques unes de mes interrogations .