-Mise à jour du TODO
-Ajout des icônes qui définissent les conditions de victoire des niveaux dans le menu principal -Modification de la classe arect pour une gestion de différents modes d'affichage et des couches -Suspension de la musique en mode édition pour fluidifier -Retirer le smoothing des lignes afin de fluidifier l'affichage -Affichage du descriptif des niveaux
This commit is contained in:
parent
eee0cd6aab
commit
1a0b6f9987
24
TODO.md
24
TODO.md
|
@ -37,16 +37,11 @@ achats et récapituler la situation.
|
||||||
en évidence avec un icone biohazard. Il est impossible d'enregistrer et
|
en évidence avec un icone biohazard. Il est impossible d'enregistrer et
|
||||||
le temps est limité.
|
le temps est limité.
|
||||||
|
|
||||||
#### STRUCTURE/PROGRAMMATION
|
#### DEVELOPPEMENT
|
||||||
|
|
||||||
* Modifier la méthode d'accès aux variables "dat" & "art".
|
* Finir la version avec_class qui comporte les batchs, des classes, et
|
||||||
* Optimiser le code pour rendre l'usage d'OpenGL plus efficient en
|
la gestion objet. Modifier le tutoriel en l'orientant objet.
|
||||||
utilisant les vertex list et les batch graphic.
|
|
||||||
* Repenser le mode simulation de façon orienté objet.
|
|
||||||
* Ajouter un makefile pour automatiser la construction du programme.
|
|
||||||
* Creer un gestionnaire de zones sensibles pour gérer le menu de
|
|
||||||
selection des labos et les bulles d'aide.
|
|
||||||
|
|
||||||
#### STATISTIQUES
|
#### STATISTIQUES
|
||||||
|
|
||||||
* Gérer le stockage des statistiques de victoire dans la base de donnée
|
* Gérer le stockage des statistiques de victoire dans la base de donnée
|
||||||
|
@ -60,15 +55,10 @@ selection des labos et les bulles d'aide.
|
||||||
#### CONCEPTION
|
#### CONCEPTION
|
||||||
|
|
||||||
* Finir la conception du labo N°2.
|
* Finir la conception du labo N°2.
|
||||||
* Créer le tutoriel pour chaque niveau du monde hydrogène.
|
|
||||||
|
|
||||||
#### FONCTIONNALITES
|
#### FONCTIONNALITES
|
||||||
|
|
||||||
* Ajouter un mode création de niveau qui faciliterait l'ajout
|
|
||||||
et la configuration.
|
|
||||||
* Finir la fenêtre des préférences du jeu.
|
* Finir la fenêtre des préférences du jeu.
|
||||||
* Changer la forme du curseur lors de certaines actions.
|
|
||||||
* Utiliser la molette de la souris dans le jeu.
|
|
||||||
* Mettre en évidence les raccourcis clavier dans les bulles d'aide.
|
* Mettre en évidence les raccourcis clavier dans les bulles d'aide.
|
||||||
|
|
||||||
#### BOGUES
|
#### BOGUES
|
||||||
|
@ -87,7 +77,3 @@ selection des labos et les bulles d'aide.
|
||||||
* Ajouter des bruitages de jeu pour rendre les simulations plus immers-
|
* Ajouter des bruitages de jeu pour rendre les simulations plus immers-
|
||||||
ives.
|
ives.
|
||||||
|
|
||||||
#### DOCUMENTATION/COMMUNICATION
|
|
||||||
|
|
||||||
* Améliorer les textes des documentations.
|
|
||||||
|
|
||||||
|
|
68
WireChem.py
68
WireChem.py
|
@ -189,26 +189,32 @@ init()
|
||||||
'''
|
'''
|
||||||
#Classe d'un rectangle
|
#Classe d'un rectangle
|
||||||
class arect(object):
|
class arect(object):
|
||||||
def __init__(self, window, x1, y1, x2, y2, color):
|
def __init__(self, window, x1, y1, x2, y2, atype, color, level):
|
||||||
self.window = window
|
self.window = window
|
||||||
self.vertex_list = window.batch.add(4, pyglet.gl.GL_QUADS, None, ('v2i', [x1, y1, x2, y1, x2, y2, x1, y2]),
|
if atype==1 or atype==2:
|
||||||
|
self.vertex_list = window.batch.add(4, pyglet.gl.GL_QUADS, level, ('v2i', [x1, y1, x2, y1, x2, y2, x1, y2]),
|
||||||
('c4B', color * 4))
|
('c4B', color * 4))
|
||||||
|
if atype==0 or atype==2:
|
||||||
|
self.vertex_list2 = window.batch.add(4, pyglet.gl.GL_LINE_LOOP, level, ('v2i', [x1, y1, x2, y1, x2, y2, x1, y2]),
|
||||||
|
('c3B', [color[0],color[1],color[2]] * 4))
|
||||||
|
|
||||||
|
|
||||||
#Classe d'un texte editable
|
#Classe d'un texte editable
|
||||||
class atext(object):
|
class atext(object):
|
||||||
def __init__(self, window, text, x, y, width, color, font, size):
|
def __init__(self, window, text, x, y, width, height, font, size):
|
||||||
self.x = x
|
self.x = x
|
||||||
self.y = y
|
self.y = y
|
||||||
self.loaded = ''
|
self.loaded = ''
|
||||||
self.text = text
|
self.text = text
|
||||||
self.color = color
|
self.color = (180, 180, 180, 255)
|
||||||
self.document = pyglet.text.document.UnformattedDocument(text)
|
self.height=height
|
||||||
|
self.document = pyglet.text.document.FormattedDocument(text)
|
||||||
self.document.set_style(0, len(self.document.text),
|
self.document.set_style(0, len(self.document.text),
|
||||||
dict(font_name=font, font_size=size, color=color, align="center",
|
dict(font_name=font, font_size=size, color=self.color, align="center",
|
||||||
background_color=(200, 200, 200, 0)))
|
background_color=(200, 200, 200, 0)))
|
||||||
font = self.document.get_font()
|
if height==0:
|
||||||
height = font.ascent - font.descent
|
font = self.document.get_font(0)
|
||||||
|
height = font.ascent - font.descent
|
||||||
self.window = window
|
self.window = window
|
||||||
self.layout = pyglet.text.layout.IncrementalTextLayout(self.document, width, height, multiline=True,
|
self.layout = pyglet.text.layout.IncrementalTextLayout(self.document, width, height, multiline=True,
|
||||||
batch=self.window.batch, group=self.window.p3)
|
batch=self.window.batch, group=self.window.p3)
|
||||||
|
@ -492,6 +498,18 @@ class menu(pyglet.window.Window):
|
||||||
self.clocks = [clock.schedule(self.draw), clock.schedule_interval(self.movefond, 0.03)]
|
self.clocks = [clock.schedule(self.draw), clock.schedule_interval(self.movefond, 0.03)]
|
||||||
self.loc = [0, 0, 1, 1]
|
self.loc = [0, 0, 1, 1]
|
||||||
self.selected = -1
|
self.selected = -1
|
||||||
|
self.icons=[abutton(self, 'icon_1', 740, 110, 0, 0, True, False, False, False,
|
||||||
|
pyglet.image.load('picture/cout.png'), 'test', 'icon', '', ''),
|
||||||
|
abutton(self, 'icon_2', 740, 65, 0, 0, True, False, False, False,
|
||||||
|
pyglet.image.load('picture/cycle.png'), 'test', 'icon', '', ''),
|
||||||
|
abutton(self, 'icon_3', 940, 110, 0, 0, True, False, False, False,
|
||||||
|
pyglet.image.load('picture/tech.png'), 'test', 'icon', '', ''),
|
||||||
|
abutton(self, 'icon_4', 940, 65, 0, 0, True, False, False, False,
|
||||||
|
pyglet.image.load('picture/rayon.png'), 'test', 'icon', '', ''),
|
||||||
|
abutton(self, 'icon_5', 850, 110, 0, 0, True, False, False, False,
|
||||||
|
pyglet.image.load('picture/temp.png'), 'test', 'icon', '', ''),
|
||||||
|
abutton(self, 'icon_6', 850, 65, 0, 0, True, False, False, False,
|
||||||
|
pyglet.image.load('picture/nrj.png'), 'test', 'icon', '', '')]
|
||||||
self.images = [pyglet.image.load('picture/leveler0.png'), pyglet.image.load('picture/leveler1.png'),
|
self.images = [pyglet.image.load('picture/leveler0.png'), pyglet.image.load('picture/leveler1.png'),
|
||||||
pyglet.image.load('picture/leveler2.png'), pyglet.image.load('picture/leveler3.png'),
|
pyglet.image.load('picture/leveler2.png'), pyglet.image.load('picture/leveler3.png'),
|
||||||
pyglet.image.load('picture/leveler4.png')]
|
pyglet.image.load('picture/leveler4.png')]
|
||||||
|
@ -501,6 +519,8 @@ class menu(pyglet.window.Window):
|
||||||
self.labels = [pyglet.text.Label("", font_name='vademecum', font_size=380, x=0, y=0, bold=False, italic=False,
|
self.labels = [pyglet.text.Label("", font_name='vademecum', font_size=380, x=0, y=0, bold=False, italic=False,
|
||||||
batch=self.batch, group=self.p0, color=(255, 80, 80, 230))]
|
batch=self.batch, group=self.p0, color=(255, 80, 80, 230))]
|
||||||
self.fond = image.load("picture/fond.png")
|
self.fond = image.load("picture/fond.png")
|
||||||
|
self.rects = [arect(self,740,148,1016,8,1,[40,40,40,255],self.p1),
|
||||||
|
arect(self,8,8,1017,149,2,[90,90,90,170],self.p0)]
|
||||||
self.buttons = [
|
self.buttons = [
|
||||||
abutton(self, 'logo', 185, 'self.window.height-200', 0, 0, True, False, True, False,
|
abutton(self, 'logo', 185, 'self.window.height-200', 0, 0, True, False, True, False,
|
||||||
pyglet.image.load('picture/logo.png'), 'test', 'icon', '', ''),
|
pyglet.image.load('picture/logo.png'), 'test', 'icon', '', ''),
|
||||||
|
@ -513,6 +533,13 @@ class menu(pyglet.window.Window):
|
||||||
abutton(self, 'menu_2', 940, 'self.window.height-100', 0, 0, True, False, True, False,
|
abutton(self, 'menu_2', 940, 'self.window.height-100', 0, 0, True, False, True, False,
|
||||||
pyglet.image.load('picture/exit2.png'), 'test', 'icon', '', '')
|
pyglet.image.load('picture/exit2.png'), 'test', 'icon', '', '')
|
||||||
]
|
]
|
||||||
|
self.infos = [atext(self, "c un test", 12, 8, 730, 140, 'OpenDyslexicAlta', 15)]
|
||||||
|
self.infos[0].layout.begin_update()
|
||||||
|
self.infos[0].color=(255,255,255,255)
|
||||||
|
self.infos[0].layout.document.set_style(0, len(self.infos[0].layout.document.text), dict(align="left"))
|
||||||
|
self.infos[0].layout.end_update()
|
||||||
|
self.infos[0].text=" "
|
||||||
|
self.infos[0].update()
|
||||||
self.levels = [
|
self.levels = [
|
||||||
abutton(self, 'level_0', -250, 0, 0, 0, True, False, True, False, self.images[level], 'test', 'icon', '',
|
abutton(self, 'level_0', -250, 0, 0, 0, True, False, True, False, self.images[level], 'test', 'icon', '',
|
||||||
''),
|
''),
|
||||||
|
@ -537,9 +564,9 @@ class menu(pyglet.window.Window):
|
||||||
abutton(self, 'level_10', -250, 0, 0, 0, True, False, True, False, self.images[level], 'test', 'icon', '',
|
abutton(self, 'level_10', -250, 0, 0, 0, True, False, True, False, self.images[level], 'test', 'icon', '',
|
||||||
'')
|
'')
|
||||||
]
|
]
|
||||||
self.untitled2 = [atext(self, "text", -300, -300, 300, (255, 255, 255, 255), 'Fluoxetine', 18) for i in
|
self.untitled2 = [atext(self, "text", -300, -300, 300, 0, 'Fluoxetine', 18) for i in
|
||||||
range(10)]
|
range(10)]
|
||||||
self.untitled = [atext(self, "text", -300, -300, 60, (180, 180, 180, 255), 'Vademecum', 23) for i in range(10)]
|
self.untitled = [atext(self, "text", -300, -300, 60, 0, 'Vademecum', 23) for i in range(10)]
|
||||||
self.special = pyglet.sprite.Sprite(pyglet.image.load('picture/boss.png'), batch=self.batch, group=self.p4,
|
self.special = pyglet.sprite.Sprite(pyglet.image.load('picture/boss.png'), batch=self.batch, group=self.p4,
|
||||||
x=-300, y=-300)
|
x=-300, y=-300)
|
||||||
self.lock = [
|
self.lock = [
|
||||||
|
@ -725,10 +752,12 @@ class menu(pyglet.window.Window):
|
||||||
global debug
|
global debug
|
||||||
if debug == 1:
|
if debug == 1:
|
||||||
debug = 2
|
debug = 2
|
||||||
|
ambiance.pause()
|
||||||
self.buttons[0].setselected([255, 0, 0])
|
self.buttons[0].setselected([255, 0, 0])
|
||||||
elif debug == 2:
|
elif debug == 2:
|
||||||
debug = 1
|
debug = 1
|
||||||
self.buttons[0].setselected(False)
|
self.buttons[0].setselected(False)
|
||||||
|
ambiance.play()
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def on_mouse_press_menu_2(self, state):
|
def on_mouse_press_menu_2(self, state):
|
||||||
|
@ -801,16 +830,27 @@ class menu(pyglet.window.Window):
|
||||||
self.buttons[2 + n].setselected(False)
|
self.buttons[2 + n].setselected(False)
|
||||||
|
|
||||||
def on_mouse_enter_level(self, n, state):
|
def on_mouse_enter_level(self, n, state):
|
||||||
global world
|
global world,worlds
|
||||||
self.levels[n].setselected([255, 0, 0])
|
self.levels[n].setselected([255, 0, 0])
|
||||||
self.untitled2[n].color = (255, 0, 0, 255)
|
self.untitled2[n].color = (255, 0, 0, 255)
|
||||||
self.untitled2[n].update()
|
self.untitled2[n].update()
|
||||||
|
self.infos[0].text=worlds[world][n]['description'].decode('utf-8')
|
||||||
|
self.infos[0].update()
|
||||||
|
if worlds[world][n]['cout']>0: self.icons[0].show()
|
||||||
|
if worlds[world][n]['maxcycle']<90000: self.icons[1].show()
|
||||||
|
if worlds[world][n]['tech']>0: self.icons[2].show()
|
||||||
|
if worlds[world][n]['maxrayon']<90000: self.icons[3].show()
|
||||||
|
if worlds[world][n]['maxtemp']<90000: self.icons[4].show()
|
||||||
|
if worlds[world][n]['maxnrj']<90000: self.icons[5].show()
|
||||||
|
|
||||||
def on_mouse_leave_level(self, n, state):
|
def on_mouse_leave_level(self, n, state):
|
||||||
self.levels[n].setselected(
|
self.levels[n].setselected(
|
||||||
[255, 120 + int(self.levels[n].x / 1024.0 * 135), 155 + int(self.levels[n].x / 1024.0 * 100)])
|
[255, 120 + int(self.levels[n].x / 1024.0 * 135), 155 + int(self.levels[n].x / 1024.0 * 100)])
|
||||||
self.untitled2[n].color = (255, 255, 255, 255)
|
self.untitled2[n].color = (255, 255, 255, 255)
|
||||||
self.untitled2[n].update()
|
self.untitled2[n].update()
|
||||||
|
self.infos[0].text=" "
|
||||||
|
self.infos[0].update()
|
||||||
|
for theicon in self.icons: theicon.hide()
|
||||||
|
|
||||||
def on_mouse_press_level(self, n, state):
|
def on_mouse_press_level(self, n, state):
|
||||||
if debug == 2:
|
if debug == 2:
|
||||||
|
@ -966,9 +1006,9 @@ ambiance.play()
|
||||||
menu_principal = menu()
|
menu_principal = menu()
|
||||||
menu_principal.set_minimum_size(1024, 768)
|
menu_principal.set_minimum_size(1024, 768)
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glEnable(GL_STENCIL_TEST);
|
#glEnable(GL_STENCIL_TEST);
|
||||||
glEnable(GL_LINE_SMOOTH);
|
#glEnable(GL_LINE_SMOOTH);
|
||||||
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
|
#glHint(GL_LINE_SMOOTH_HINT, GL_FASTEST);
|
||||||
glEnable(GL_LINE_STIPPLE)
|
glEnable(GL_LINE_STIPPLE)
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
pyglet.app.run()
|
pyglet.app.run()
|
||||||
|
|
Loading…
Reference in New Issue