gema.py

Created by frablock

Created on August 14, 2021

4.07 KB

Partager

LogoGeMa GeMa

Version 0.7

Nous vous recommandons de publier votre script avec la version GeMaMIN, qui est une version plus optimisée

Commencer à utiliser GeMa

from gema import * Et voilà, vous avez accès à GeMa depuis votre script

Si vous voulez en savoir plus, allez voir notre documentation

Avec GeMa, vous pouvez :
  • Créez

Ce script a été créé dans un but, faciliter la création de jeu, et en particulier les visualnovels.

  • Manipulez vos sprites

GeMa Engine peut lire et interpréter les fichiers sprites (.pikt ou .pik)

  • Partagez

Partagez rapidement votre création sur notre site


#Docs -> https://discode.fr/gema/doc.html
_C,_B,_A='Score : ','white','[OK]'
#Importaion des bibliothèques
try:from os import *
except:print('Omega est requis')
from random import *;from kandinsky import *;from ion import *;from time import *
#Certaines commandes sont optimisées ci-dessous
def p(a):print(a)
def fr(a,b,c,d,e):fill_rect(a,b,c,d,e)
def kd(a):return keydown(a)
def rch(a):return choice(a)
def ra(a,b):return randint(a,b)
num=(42,1),(43,2),(44,3),(36,4),(37,5),(38,6),(30,7),(31,8),(32,9),(48,0);alpha='a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ','?','!','.','_','-',''
def keyboard(key=alpha,base='',v=1):#Clavier inclus dans GeMa
 B='num';A='alpha';fr(0,180,360,225,_B);sl(0.25);shi=0
 if key==num:m=B
 else:m=A
 while True:
  for i in range(len(key)):
   if m==A:
    y=i
    if i+18>34:y=i-1
    if i+18>40:y=i-2
    if i+18>46:y=i-3
   if kd(i+18):
    if shi==0:base+=str(key[y])
    else:base+=str(key[y].upper())
   if m==B and kd(key[i][0]):base+=str(key[i][1]);sl(0.25)
   if kd(12):
    if shi==0:shi=1
    else:shi=0
    sl(0.25)
   if kd(13):
    if m==A:keyboard(num,base)
    else:keyboard(alpha,base)
   if kd(17):
    try:lb=list(base);lb.pop();base=''
    except:tt('Texte vide','>')
    for s in range(len(lb)):base+=lb[s]
    sl(0.25)
   if kd(4)or kd(52):return base
   if v!=0:gm_w(base+' ','CLAVIER ('+m+', UPPER='+str(shi)+')  ')
def i(a='',b=0):
 try:
  if b==1:return keyboard()
  else:return input(a)
 except:return input(a)
def re(a,b):rename(a,b)
def ds(a,b,c):draw_string(a,b,c)
def gm_err():gm_w('#>_< - err','',1)
#Les trois commandes ci dessous permettent la gestion d'images
def gm_i(im,pal,t=4,po=0,py=0):
 r,i=0,0
 while r<len(im):
  s,n=im[r],'';r+=1
  while r<len(im)and'9'>=im[r]>='0':n+=im[r];r+=1
  nb=1 if n==''else int(n);c=pal[ord(s)-65]
  for j in range(nb):fr(po+t*(i%80),py+t*(i//80),t,t,(c[0],c[1],c[2]));i+=1
def pik(im,pal,p="pik",t=4,po=0,py=0,whp=(10,10,5,"0")):
 if p=="pikt":pikt(im,pal,whp,(po,py))
 else:gm_i(im,pal,p=pik,t=4,po=0,py=0,whp=(10,10,5,"0"))
def pikt(im,pal,whp=(10,10,5,"0"),xy=(100,100)):
 for i in range(whp[0]*whp[1]):
  c=pal[int("0x"+im[i])]
  if im[i]!=whp[3]:fr(xy[0]+whp[2]*(i%whp[0]),xy[1]+whp[2]*(i//whp[0]),whp[2],whp[2],c)
#Les deux commandes ci dessous permettent l'affichage de textes
def gm_w(txt,perso,rw=0):
 A='\n'
 if rw>0:gm_r()
 a,b=list(txt)+[''],'';l=len(a)
 if l>64:p('#>64')
 if l>32:
  for i in range(64-l):
   if a[32-i]==' ':a.insert(33-i,A);break
  if a.count(A)<=0:a.insert(32,A)
  for i in range(l):b+=a[i]
 else:b=str(txt)
 ds(str(perso),0,160);ds(str(b),0,180)
def gm_t(txt,perso,img=0,pal=0,a=4,b=0,c=0):
 if img==0:gm_w(txt,perso)
 else:gm_i(img,pal,a,b,c);gm_w(txt,perso)
def gm_a(a,b,c,d,e,a5='#err:str?'):#Affichage d'action que le joueur peut effectuer, nous vous recommandons d'ajouter gm_c() 
 ds('[up]'+str(a),0,0)
 if e>=2:ds('[down]'+str(b),0,18)
 if e>=3:ds('[left]'+str(c),0,36)
 if e>=4:ds('[right]'+str(d),0,54)
 if e>=5:ds(_A+str(a5),0,72)
def gm_wi(win,sco=0):
 p('***GeMa - Vous avez gagne');gm_r();ds('Felicitations, vous avez gagne\nVous etes vainqueur :\n'+str(win),0,80);p(_C+str(sco))
 if sco!=0:gm_sco(sco)
def gm_r():fr(0,0,320,225,_B)#reset l'affichage
def sl(a):sleep(a)
def gm_s():co=[(0,0,0),_B];fr(0,0,320,255,co[0]);fr(130,70,60,60,co[1]);fr(140,80,50,40,co[0]);fr(180,100,10,30,co[1]);fr(180,100,-20,10,co[1]);ds('eMa',192,112);ds('Engine',130,132);sl(2.8);fr(0,0,320,255,'grey');sl(0.1);gm_r();ds(_A,0,0)
def gm_sco(sco):ds(_C+str(sco),200,0)
def tr(a=''):
 for i in range(32):a=a+rch(['_','-','(',')','@','O','D','{','}','#','%','&','=','[]','|',';','!','?','H','>','<','*',"'",'.','/'])
 return a
def tt(b,c,x=0,y=0):#Affichage du texte avec l'effet TextType
 for i in range(len(b)):c+=b[i];ds(c,x,y);sl(0.05)
def gm_c(a,b,c,d,e,a5=0):#Gestion des clics
 while True:
  if kd(1)and e>=1:return a
  if kd(2)and e>=2:return b
  if kd(0)and e>=3:return c
  if kd(3)and e>=4:return d
  if kd(4)and e>=5:return a5
def pu(a,x=106,y=75,w=106,h=75):fr(x,y,w,h,(0,0,0));fr(x+1,y+1,w-2,h-2,_B);ds(a,x+2,y+2);ds(_A,x+2,y+h-20);gm_c(1,1,1,1,5,1)
gm_s()