begin process at 2010 09 08 22:38:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Python

 > 

Divers

 > 

Aide et documentation

 > 

URGENT!! Probleme tetris python


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

URGENT!! Probleme tetris python

mercredi 5 mai 2010 à 23:40:57 | URGENT!! Probleme tetris python

basic50

Bonjour à tous, voila j'ai un soucis sur un petit programme de tetris en python. J'ai réussit à faire le programme, tt du moins la base(les tetris se succèdent les uns après les autres uns que l'on puisse les déplacer), mais je doit faire, je site:"un joueur automatique qui effectue une action (ou aucune) à chaque fois que la pièce descend d’une ligne : rotation d’un quart de tour ou déplacement horizontal d’une case", et je n'y arrive pas.Ts les mouvements sont déjà définis je n'ai "plus" qu'à faire le bot.C'est pour vendredi et je commence à paniquer!! Alors si vous pouviez m'aider, je vous en serai éternellement reconnaissant.

Merci d'avance.

voila le source:(désole je n'ai pas vu de possibilité de pièces jointes)


############################################################################################################################################
# VARIABLES
############################################################################################################################################
#Les variables generales:
x_cur=3
y_cur=-4
laps=0.5
#Les variables du tetris:
tetris_num=0
tetris_rot=0
width_one=36.0
tetris=[[((0,2),(0,3),(1,2),(1,3)),((0,2),(0,3),(1,2),(1,3)),((0,2),(0,3),(1,2),(1,3)),((0,2),(0,3),(1,2),(1,3))],[((0,2),(0,3),(1,3),(2,3)),((0,1),(0,2),(0,3),(1,1)),((0,2),(1,2),(2,2),(2,3)),((0,3),(1,1),(1,2),(1,3))],[((0,3),(1,2),(1,3),(2,2)),((0,1),(0,2),(1,2),(1,3)),((0,3),(1,2),(1,3),(2,2)),((0,1),(0,2),(1,2),(1,3))],[((0,3),(1,3),(2,3),(3,3)),((0,1),(0,2),(0,3),(0,4)),((0,3),(1,3),(2,3),(3,3)),((0,1),(0,2),(0,3),(0,4))],[((0,2),(1,2),(1,3),(2,3)),((0,2),(0,3),(1,1),(1,2)),((0,2),(1,2),(1,3),(2,3)),((0,2),(0,3),(1,1),(1,2))],[((0,2),(1,2),(1,3),(2,2)),((0,2),(1,1),(1,2),(1,3)),((0,3),(1,2),(1,3),(2,3)),((0,1),(0,2),(0,3),(1,2))],[((0,3),(1,3),(2,2),(2,3)),((1,1),(1,2),(1,3),(2,3)),((0,2),(0,3),(1,2),(2,2)),((1,1),(2,1),(2,2),(2,3))]]
#arena variables
num_line=20
num_col=10
pix_width=width_one*num_col+2
pix_height=width_one*num_line+2
arena=[-1]*(num_line+4)
arena_end=[-1]*(num_col+2)
#colors variables
tetris_col=5
aff_color=tetris_col
bg_color="black"
color=[("orange red","red","dark red"),("light blue","blue","dark blue"),("pale green","light green","dark green"),("light grey","grey","dark grey"),("light yellow","yellow","yellow green"),("PeachPuff1","PeachPuff2","PeachPuff3"),("chocolate1","chocolate2","chocolate3"),(bg_color,bg_color,bg_color)]
#file d'attente
A=[]

############################################################################################################################################
# DEF
############################################################################################################################################
#affiche/efface un tetris
def draw_tetris(action):
if action=='trace':
couleur=aff_color
if action=='efface':
couleur=7
for offset_x, offset_y in tetris[tetris_num][tetris_rot]:
f=0
x1=(x_cur+offset_x)*width_one+1
y1=(y_cur+offset_y)*width_one+(width_one/2)+1
y2=(y_cur+offset_y)*width_one+width_one
col1,col2,col3 = color[couleur]
tab.create_line(x1,y1,x1+width_one,y1,width=width_one,fill=col1)
while f < width_one :
tab.create_line(x1+f,y2-f,x1+width_one,y2-f,width=1,fill=col2)
f+=1
tab.create_line(x1+width_one/4,y1,x1+width_one-width_one/4,y1,width=width_one/2,fill=col3)
return

#teste la possibilite d'afficher le tetris
def test(x_test,y_test,tetris_num_test,tetris_rot_test):
aaa=""
for offset_x, offset_y in tetris[tetris_num_test][tetris_rot_test]:
x1=(x_test+offset_x)
y1=(y_test+offset_y)
if arena[y1+4][x1+1] < 7:
return "impossible"
return "possible"

#pose le tetris dans arena
def put_tetris():
s=0
for offset_x, offset_y in tetris[tetris_num][tetris_rot]:
s=s+1
x1=(x_cur+offset_x)
y1=(y_cur+offset_y)
arena[y1+4][x1+1]=tetris_col
return
#deplace le tetris
def move(new_x,new_y,new_tetris,new_rot):
global x_cur, y_cur, num_tetris, num_rot
draw_tetris('efface')
x_cur,y_cur,num_tetris,num_rot=new_x,new_y,new_tetris,new_rot
draw_tetris('trace')
return
#vers le bas
def down_move():
global A
if test(x_cur,y_cur+1,tetris_num,tetris_rot)=="possible":
move(x_cur,y_cur+1,tetris_num,tetris_rot)
del(A[0])
elif test(x_cur,y_cur+1,tetris_num,tetris_rot)=="impossible":
put_tetris()
A=["next"]
return
#vers la gauche
def left_move():
if test(x_cur-1,y_cur,tetris_num,tetris_rot)=="possible":
move(x_cur-1,y_cur,tetris_num,tetris_rot)
del(A[0])

return
#vers la droite
def right_move():
if test(x_cur+1,y_cur,tetris_num,tetris_rot)=="possible":
move(x_cur+1,y_cur,tetris_num,tetris_rot)
del(A[0])
return
#rotation
def rotate_up():
global tetris_rot
if test(x_cur,y_cur,tetris_num,(tetris_rot+1)%4)=="possible":
draw_tetris("efface")
tetris_rot=(tetris_rot+1)%4
draw_tetris("trace")
del(A[0])
return
#rotation
def rotate_down():
global tetris_rot
if test(x_cur,y_cur,tetris_num,(tetris_rot-1)%4)=="possible":
draw_tetris("efface")
tetris_rot=(tetris_rot-1)%4
draw_tetris("trace")
del(A[0])
return


#temporisation

def timing():
global w
while w==1:
a=len(A)
if a==0:
A.append("down")
elif A[a-1]=="down":
pass
else:
A.append("down")
sleep(laps)
return

#redessine le tableau (pas fini)
def update_arena():
x=0
while x < num_line+4:
line="complete"
for m in arena[x]:
if m > 6 :
line="incomplete"
if line=="complete":
del(arena[x])
arena.insert(0,[-1]+[7]*num_col+[-1])
x=x+1
retrace_arena()
return

def retrace_arena():
xx=0
while xx < num_line+4:
yy=1
while yy < num_col+1:
ra_color=arena[xx][yy]
if ra_color > 7:
ra_color = ra_color-8
trace_one(yy-1,xx-4,ra_color)
yy=yy+1
xx=xx+1
return

#dessine un carre
def trace_one(x,y,couleur):
f=0
x1=x*width_one+1
y1=y*width_one+(width_one/2)+1
y2=y*width_one+width_one
col1,col2,col3 = color[couleur]
tab.create_line(x1,y1,x1+width_one,y1,width=width_one,fill=col1)
while f < width_one :
tab.create_line(x1+f,y2-f,x1+width_one,y2-f,width=1,fill=col2)
f=f+1
tab.create_line(x1+width_one/4,y1,x1+width_one-width_one/4,y1,width=width_one/2,fill=col3)
return

############################################################################################################################################
# CORPS
############################################################################################################################################
#initialize arena
count=num_line+3
while count >= 0:
arena[count]=[-1]+[7]*num_col+[-1]
count=count-1
arena.append(arena_end)

#initialize tab
from Tkinter import *
from threading import *
from time import *
from random import *
tab=Canvas(bg=bg_color,height=pix_height,width=pix_width)
tab.pack()
button_quitter=Button(text="Quitter")
button_quitter.pack(side=RIGHT)
w=1
#

k=Thread(None,timing,None)
k.start()
h=0
#test
while test(3,-4,tetris_num,tetris_rot)=="possible":
h=h+1
A=[]
tetris_num=randrange(7)
aff_color=randrange(7)
fantome=randrange(10)
if fantome==0:#enlever le commentaire denant +8 pour activer les tetris fantomes
tetris_col=aff_color#+8
else:
tetris_col=aff_color
tetris_rot=randrange(4)
x_cur,y_cur=3,-4
while len(A)==0:
pass
while A[0] != "next":
if A[0]=="null":
del(A[0])
elif A[0]=="down":
down_move()
elif A[0]=="left":
left_move()
elif A[0]=="right":
right_move()
elif A[0]=="r_up":
rotate_up()
elif A[0]=="r_down":
rotate_down()
print A,h
tab.update()
if len(A)==0 :
A.append("null")
update_arena()
w=0
Code Python :
[code=py][code=py]
[/code][/code]



Cette discussion est classée dans : num, width, color, one, tetris


Répondre à ce message

Sujets en rapport avec ce message

Problème de définition [ par amaury74 ] Bonjours à tous,J'ai écrit plusieurs petit codes destinés à dessiner des afficheurs sur Tkinter.J'ai définie une fonction pour chaque code avec la com


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales