# import pygame
# import random
# import math
# # pygame setup
# pygame.init()
# screen = pygame.display.set_mode((1280, 720))
# clock = pygame.time.Clock()
# running = True
# teduri = pygame.Rect(340,60,600,600)
# suatja =[[0 for i in range(4)] for i in range(4)]
# sp = [2,2,2,2,2,2,2,2,2,4]
# #sp = [512]
# normalFont = pygame.font.SysFont(None,50)
# box_color=["#CCCC77","#DDDD88","#EEEE99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF","#777777","#666666","#555555","#444444","#333333","#222222","#111111","#000000"]
# text_color=["#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF"]
# def randomSpawn():
# y = random.randrange(0,4)
# x = random.randrange(0,4)
# if suatja[y][x]==0:
# suatja[y][x] = random.choice(sp)
# else:
# return randomSpawn()
# def banghyang(bv):
# bl = True
# for i in range(4):
# for j in range(3):
# if bv == "up":
# if suatja[j][i]!=0:
# for k in range(3-j):
# if suatja[j+(k+1)][i] == suatja[j][i]:
# suatja[j][i]*=2
# suatja[j+(k+1)][i]=0
# bl = False
# break
# elif suatja[j+(k+1)][i] != 0:
# break
# if bv == "down":
# if suatja[3-j][i] != 0:
# for k in range(j+1,4):
# if suatja[3-k][i] == suatja[3-j][i]:
# suatja[3-j][i] *= 2
# suatja[3-k][i] = 0
# bl = False
# break
# elif suatja[3-k][i] != 0:
# break
# if bv == "left":
# if suatja[i][j] != 0:
# for k in range(3 - j):
# if suatja[i][j + (k + 1)] == suatja[i][j]:
# suatja[i][j] *= 2
# suatja[i][j + (k + 1)] = 0
# bl = False
# break
# elif suatja[i][j + (k + 1)] != 0:
# break
# if bv == "right":
# if suatja[i][3 - j] != 0:
# for k in range(j + 1, 4):
# if suatja[i][3 - k] == suatja[i][3 - j]:
# suatja[i][3 - j] *= 2
# suatja[i][3 - k] = 0
# bl = False
# break
# elif suatja[i][3 - k] != 0:
# break
# # if bv == "left":
# # for k in range(3):
# # if suatja[k][i]!=0:
# # continue
# # for kk in range(k,4):
# # if suatja[kk][i]!=0:
# # suatja[k][i]=suatja[kk][i]
# # suatja[kk][i]=0
# # if suatja[j][i] != 0 :
# # if j == 3:
# # continue
# # if suatja[j+1][i] == suatja[j][i]:
# # suatja[j][i]*=2
# # suatja[j+1][i]=0
# # if bv == "right":
# # for k in range(3):
# # if suatja[k][i]!=0:
# # continue
# # for kk in range(k,4):
# # if suatja[kk][i]!=0:
# # suatja[k][i]=suatja[kk][i]
# # suatja[kk][i]=0
# # if suatja[j][i] != 0 :
# # if j == 3:
# # continue
# # if suatja[j+1][i] == suatja[j][i]:
# # suatja[j][i]*=2
# # suatja[j+1][i]=0
# for i in range(4):
# for j in range(3):
# if bv == "up":
# if suatja[j][i] == 0:
# for k in range(j+1,4):
# if suatja[k][i]!=0:
# suatja[j][i]=suatja[k][i]
# suatja[k][i]=0
# bl = False
# break
# if bv == "down":
# if suatja[3-j][i] == 0:
# for k in range(j+1, 4):
# if suatja[3-k][i] != 0:
# suatja[3-j][i] = suatja[3-k][i]
# suatja[3-k][i] = 0
# bl = False
# break
# if bv == "left":
# if suatja[i][j] == 0:
# for k in range(j+1,4):
# if suatja[i][k]!=0:
# suatja[i][j]=suatja[i][k]
# suatja[i][k]=0
# bl = False
# break
# if bv == "right":
# if suatja[i][3-j] == 0:
# for k in range(j+1, 4):
# if suatja[i][3-k] != 0:
# suatja[i][3-j] = suatja[i][3-k]
# suatja[i][3-k] = 0
# bl = False
# break
# return bl
#
# for i in range(2):
# randomSpawn()
# while running:
# # poll for events
# # pygame.QUIT event means the user clicked X to close your window
# for event in pygame.event.get():
# if event.type == pygame.QUIT:
# running = False
# if event.type == pygame.KEYDOWN:
# if event.key == pygame.K_UP:
# if not banghyang("up"):
# randomSpawn()
# print("up")
# elif event.key == pygame.K_DOWN:
# if not banghyang("down"):
# randomSpawn()
# print("down")
# elif event.key == pygame.K_LEFT:
# if not banghyang("left"):
# randomSpawn()
# print("left")
# elif event.key == pygame.K_RIGHT:
# if not banghyang("right"):
# randomSpawn()
# print("right")
# v = False
# for i in range(4):
# for j in range(4):
# if j!=3 and (suatja[i][j]==suatja[i][j+1] or suatja[i][j+1]==0):
# v = True
# if j!=0 and (suatja[i][j]==suatja[i][j-1] or suatja[i][j-1]==0):
# v = True
# if i!=3 and (suatja[i][j]==suatja[i+1][j] or suatja[i+1][j]==0):
# v = True
# if i!=0 and (suatja[i][j]==suatja[i-1][j] or suatja[i-1][j]==0):
# v = True
# screen.fill("#AAAA99")
#
# # fill the screen with a color to wipe away anything from last frame
# pygame.draw.rect(screen,"#FFFFAA",teduri,0,10)
# for i in range(4):
# for j in range(4):
# if suatja[i][j]==0:
# pygame.draw.rect(screen,"#EEEEAA",(350+146*j,70+146*i,142,142),0,5)
# else:
# pygame.draw.rect(screen,box_color[int(math.log2(suatja[i][j])-1)],(350+146*j,70+146*i,142,142),0,5)
# text = normalFont.render("%d"%suatja[i][j],True,text_color[int(math.log2(suatja[i][j])-1)])
# text_r = text.get_rect()
# text_r.center = (423+146*j,143+146*i)
# screen.blit(text,text_r)
# # flip() the display to put your work on screen
# if not v:
# t = pygame.font.SysFont("Lucida Console",250).render("end", True, (0, 0, 0))
# t_r = t.get_rect()
# t_r.center = (640,360)
# screen.blit(t, t_r)
# pygame.display.flip()
# clock.tick(60) # limits FPS to 60
#
# pygame.quit()
#2p
import pygame
import random
import math
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1720, 920))
clock = pygame.time.Clock()
running = True
t1 = pygame.Rect(0,0,600,600)
t1.center = (1720*(1/4),460)
t2 = pygame.Rect(150,160,600,600)
t2.center = (1720*(3/4),460)
p1 =[[0 for i in range(4)] for i in range(4)]
p2 =[[0 for i in range(4)] for i in range(4)]
sp = [2,2,2,2,2,2,2,2,2,4]
normalFont = pygame.font.SysFont(None,50)
box_color=["#CCCC77","#DDDD88","#EEEE99","#FFFFAA","#FFFFBB","#FFFFCC","#FFFFDD","#FFFFEE","#FFFFFF","#777777","#666666","#555555","#444444","#333333","#222222","#111111","#000000","#FFEEFF","#FFFFFF"]
text_color=["#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#000000","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FF55FF","#999999"]
def randomSpawn(who):
y = random.randrange(0,4)
x = random.randrange(0,4)
if who[y][x]==0:
who[y][x] = random.choice(sp)
else:
return randomSpawn(who)
def randomAttack(victim,att):
y = random.randrange(0, 4)
x = random.randrange(0, 4)
if victim[y][x] == 0:
victim[y][x] = int(att/2)
else:
return randomAttack(victim)
def banghyang(bv,who,vt):
bl = True
for i in range(4):
for j in range(3):
if bv == "up":
if who[j][i]!=0:
for k in range(3-j):
if who[j+(k+1)][i] == who[j][i]:
who[j][i]*=2
who[j+(k+1)][i]=0
if who[j][i] > 256:
bl = False
break
elif who[j+(k+1)][i] != 0:
break
if bv == "down":
if who[3-j][i] != 0:
for k in range(j+1,4):
if who[3-k][i] == who[3-j][i]:
who[3-j][i] *= 2
who[3-k][i] = 0
bl = False
break
elif who[3-k][i] != 0:
break
if bv == "left":
if who[i][j] != 0:
for k in range(3 - j):
if who[i][j + (k + 1)] == who[i][j]:
who[i][j] *= 2
who[i][j + (k + 1)] = 0
bl = False
break
elif who[i][j + (k + 1)] != 0:
break
if bv == "right":
if who[i][3 - j] != 0:
for k in range(j + 1, 4):
if who[i][3 - k] == who[i][3 - j]:
who[i][3 - j] *= 2
who[i][3 - k] = 0
bl = False
break
elif who[i][3 - k] != 0:
break
for i in range(4):
for j in range(3):
if bv == "up":
if who[j][i] == 0:
for k in range(j+1,4):
if who[k][i]!=0:
who[j][i]=who[k][i]
who[k][i]=0
bl = False
break
if bv == "down":
if who[3-j][i] == 0:
for k in range(j+1, 4):
if who[3-k][i] != 0:
who[3-j][i] = who[3-k][i]
who[3-k][i] = 0
bl = False
break
if bv == "left":
if who[i][j] == 0:
for k in range(j+1,4):
if who[i][k]!=0:
who[i][j]=who[i][k]
who[i][k]=0
bl = False
break
if bv == "right":
if who[i][3-j] == 0:
for k in range(j+1, 4):
if who[i][3-k] != 0:
who[i][3-j] = who[i][3-k]
who[i][3-k] = 0
bl = False
break
return bl
def Lose(who):
v = False
for i in range(4):
for j in range(4):
if j != 3 and (who[i][j] == who[i][j + 1] or who[i][j + 1] == 0):
v = True
if j != 0 and (who[i][j] == who[i][j - 1] or who[i][j - 1] == 0):
v = True
if i != 3 and (who[i][j] == who[i + 1][j] or who[i + 1][j] == 0):
v = True
if i != 0 and (who[i][j] == who[i - 1][j] or who[i - 1][j] == 0):
v = True
return v
for i in range(2):
randomSpawn(p1)
randomSpawn(p2)
while running:
# poll for events
# pygame.QUIT event means the user clicked X to close your window
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
if not banghyang("up",p2,p1):
randomSpawn(p2)
print("up")
elif event.key == pygame.K_DOWN:
if not banghyang("down",p2,p1):
randomSpawn(p2)
print("down")
elif event.key == pygame.K_LEFT:
if not banghyang("left",p2,p1):
randomSpawn(p2)
print("left")
elif event.key == pygame.K_RIGHT:
if not banghyang("right",p2,p1):
randomSpawn(p2)
print("right")
if event.key == pygame.K_w:
if not banghyang("up",p1,p2):
randomSpawn(p1)
print("up")
elif event.key == pygame.K_s:
if not banghyang("down",p1,p2):
randomSpawn(p1)
print("down")
elif event.key == pygame.K_a:
if not banghyang("left",p1,p2):
randomSpawn(p1)
print("left")
elif event.key == pygame.K_d:
if not banghyang("right",p1,p2):
randomSpawn(p1)
print("right")
screen.fill("#AAAA99")
v = Lose(p1)
v1 = Lose(p2)
# fill the screen with a color to wipe away anything from last frame
pygame.draw.rect(screen,"#FFFFAA",t1,0,10)
pygame.draw.rect(screen,"#FFFFAA",t2,0,10)
#p1
for i in range(4):
for j in range(4):
p_rect = (140 + 146 * j, 100 + 70 + 146 * i, 142, 142)
if p1[i][j]==0:
pygame.draw.rect(screen,"#EEEEAA",p_rect,0,5)
else:
if p1[i][j]>262144:
pygame.draw.rect(screen, box_color[19 - 1],p_rect, 0, 5)
else:
pygame.draw.rect(screen,box_color[int(math.log2(p1[i][j])-1)],p_rect,0,5)
if p1[i][j]>262144:
text = normalFont.render("%d"%p1[i][j], True, text_color[19 - 1])
elif p1[i][j]==262144:
text = normalFont.render("Max", True, text_color[int(math.log2(p1[i][j]) - 1)])
else:
text = normalFont.render("%d"%p1[i][j],True,text_color[int(math.log2(p1[i][j])-1)])
text_r = text.get_rect()
text_r.center = (211+146*j,242+146*i)
screen.blit(text,text_r)
#p2
for i in range(4):
for j in range(4):
p_rect = (140+860 + 146 * j, 100 + 70 + 146 * i, 142, 142)
if p2[i][j]==0:
pygame.draw.rect(screen,"#EEEEAA",p_rect,0,5)
else:
if p2[i][j]>262144:
pygame.draw.rect(screen, box_color[19 - 1],p_rect, 0, 5)
else:
pygame.draw.rect(screen,box_color[int(math.log2(p2[i][j])-1)],p_rect,0,5)
if p2[i][j]>262144:
text = normalFont.render("%d"%p2[i][j], True, text_color[19 - 1])
elif p2[i][j]==262144:
text = normalFont.render("Max", True, text_color[int(math.log2(p2[i][j]) - 1)])
else:
text = normalFont.render("%d"%p2[i][j],True,text_color[int(math.log2(p2[i][j])-1)])
text_r = text.get_rect()
text_r.center = (211+860+146*j,242+146*i)
screen.blit(text,text_r)
# flip() the display to put your work on screen
if not v:
t = pygame.font.SysFont("Lucida Console",250).render("p2 win", True, (0, 0, 0))
t_r = t.get_rect()
t_r.center = (1720/2,920/2)
screen.blit(t, t_r)
if not v1:
t = pygame.font.SysFont("Lucida Console",250).render("p1 win", True, (0, 0, 0))
t_r = t.get_rect()
t_r.center = (1720/2,920/2)
screen.blit(t, t_r)
pygame.display.flip()
clock.tick(60) # limits FPS to 60
pygame.quit()top of page

실제 작동 상태를 확인하려면 라이브 사이트로 이동하세요.
hv79135v
hv79135v
댓글 0개
좋아요
댓글(0)
더 이상 게시물에 대한 댓글 기능이 지원되지 않습니다. 자세한 사항은 사이트 소유자에게 문의하세요.
bottom of page


