import pygame
import random
import math
import socket
from socket import *
HOST = '127.0.0.1'
PORT = 15785
"""계 획:
소켓을 활용하여 대기실 + 연동돼는 플레이 만들기.
대기실:
미루기.
연동플:
데이터(숫자 배열 1개와 공격 배열)를 받아 적용시키기..
temp
data = cls.recv(1024)
print(data.decode('utf-8'))
"""
# pygame setup
pygame.init()
box = pygame.Rect(0, 0, 600, 600)
box.center = (1720 / 4, 1000 / 2)
you = [[0 for i in range(4)] for i in range(4)]
other = [[0 for i in range(4)] for i in range(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,sp):
y = random.randrange(0, 4)
x = random.randrange(0, 4)
if who[y][x] == 0:
who[y][x] = random.choice(sp) * 32
else:
return randomSpawn(who)
def full(who):
v = True
for i in range(4):
for j in range(4):
if who[i][j] == 0:
v = False
return v
def attm(who):
for i in range(4):
for j in range(4):
if who[i][j] < 0:
who[i][j] += 1
def draw(who,screen, vs1):
for i in range(4):
for j in range(4):
if vs1:
p_rect = ((1720* (3/4) - 300 + 10) + 146 * j, (1000 / 2 - 300 + 10) + 146 * i, 142, 142)
else:
p_rect = ((1720 / 4 - 300 + 10) + 146 * j, (1000 / 2 - 300 + 10) + 146 * i, 142, 142)
if who[i][j] == 0:
pygame.draw.rect(screen, "#EEEEAA", p_rect, 0, 5)
else:
if who[i][j] < 0:
pygame.draw.rect(screen, "#888888", p_rect, 0, 5)
text = normalFont.render("%d" % who[i][j], True, "#444444")
else:
if who[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(who[i][j]) - 1)], p_rect, 0, 5)
if who[i][j] > 262144:
text = normalFont.render("%d" % who[i][j], True, text_color[19 - 1])
elif who[i][j] == 262144:
text = normalFont.render("Max", True, text_color[int(math.log2(who[i][j]) - 1)])
else:
text = normalFont.render("%d" % who[i][j], True, text_color[int(math.log2(who[i][j]) - 1)])
text_r = text.get_rect()
cen = (211 + 146 * j, 242 + 146 * i)
text_r.center = cen
screen.blit(text, text_r)
def randomAttack(victim, att):
y = random.randrange(0, 4)
x = random.randrange(0, 4)
if victim[y][x] == 0:
victim[y][x] = -att[0]
att.pop(0)
else:
return randomAttack(victim, att)
def banghyang(bv, who, stats, send):
x = 6
bl = True
for i in range(4):
for j in range(3):
if bv == pygame.K_UP or bv == pygame.K_w:
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
bl = False
if who[j][i] > 64:
if stats == 'client':
send.send(sangsae(who,(math.log2(who[j][i])+x)).encode('utf-8'))
break
elif who[j + (k + 1)][i] != 0:
break
if bv == pygame.K_DOWN or bv == pygame.K_s:
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
if who[3 - j][i] > 64:
if stats == 'client':
send.send(sangsae(who,(math.log2(who[3 - j][i]) + x)).encode('utf-8'))
break
elif who[3 - k][i] != 0:
break
if bv == pygame.K_LEFT or bv == pygame.K_a:
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
if who[i][j] > 64:
if stats == 'client':
send.send(sangsae(who,(math.log2(who[i][j])+x)).encode('utf-8'))
break
elif who[i][j + (k + 1)] != 0:
break
if bv == pygame.K_RIGHT or bv == pygame.K_d:
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
if who[i][3 - j] > 64:
if stats == 'client':
send.send(sangsae(who,(math.log2(who[i][3 - j])+x)).encode('utf-8'))
break
elif who[i][3 - k] != 0:
break
if not bl:
attm(who)
sort(who,bv,bl)
return bl
def sort(who,bv,bl):
for i in range(4):
for j in range(3):
if bv == pygame.K_UP or bv == pygame.K_w:
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 == pygame.K_DOWN or bv == pygame.K_s:
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 == pygame.K_LEFT or bv == pygame.K_a:
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 == pygame.K_RIGHT or bv == pygame.K_d:
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 sangsae(w,n):
for i in range(4):
for j in range(4):
if w[i][j] < 0 and n!=0:
if w[i][j] + n >= 0:
n += w[i][j]
else:
w[i][j] += n
return 0
return n
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
def gamestart():
for i in range(2):
randomSpawn(you)
top of page

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


