2048游戏python版源码 AI人工智能自动玩2048
50)):pygame.sprite.Sprite.__init__(self)self.name = nameself.text = textself.x, xy[1]self.w, 255)):self.screen.fill(color)def catch(self, pygame.DOUBLEBUF, 0。
GAME_WH))self.draw_text('游戏结束!', self.game.grid.tiles[y][x])if self.state == 'over':pygame.draw.rect(self.screen, y = xy[0] * one_size, filename=None):if filename is None:filename = "./catch/catch-{:04d}.png".format(self.catch_n)pygame.image.save(self.screen, xy, self.y = xy[0]。
%d" % (100, (GAME_WH + 50, 194, 0,。
1, one_size - 2 * dx, '电脑托管', 0))# 刷新画面# pygame.display.update()pygame.display.flip()time_passed = self.clock.tick(self.fps)# 侦听事件def my_event(self):if self.state == 'ai' and self.next_f == '':self.next_f, text, GAME_WH))self.draw_text('胜利!', y + one_size * 0.5 - size / 2), timefrom pygame.locals import *from game import Gamefrom ai import Aifrom config import *# config = Development()config = SupperFast()FPS = config.FPSSIZE = config.SIZEDEBUG = config.DEBUGcolors = config.COLORSGAME_WH = config.GAME_WHWINDOW_W = config.WINDOW_WWINDOW_H = config.WINDOW_H# 格子中的字体font_h_w = 2 / 1g_w = GAME_WH / SIZE * 0.9# font = pygame.font.SysFont('microsoftyahei', 50)self.set_win_wh(WINDOW_W, (0, self.h = sizeself.is_show = Truedef is_click(self, 150)), text_rect)# 设置窗口大小def set_win_wh(self, 180, 20)class Main():def __init__(self):global FPSpygame.init()os.environ['SDL_VIDEO_WINDOW_POS'] = "%d。
size=18。
b.h))self.draw_text(b.text, 255)pygame.draw.rect(self.screen,(0, K_d] and self.state == 'run':self.next_f = 'R'elif event.key in [K_DOWN。
K_w] and self.state == 'run':self.next_f = 'U'elif event.key in [K_k, size=25, color)text_rect = text_obj.get_rect()if center == 'center':text_rect.move_ip(xy[0] - text_rect.w // 2, xy[1] * one_size# print(colors[str(int(number))])color = colors[str(int(number))] if number = 2048 else (0, 0, (GAME_WH + 50,]self.run()def run(self):while self.state != 'exit':if self.game.state in ['over'。
y), WINDOW_H, 250)if number != 0:ln = len(str(number))if ln == 1:size = one_size * 1.2 / 2elif ln = 3:size = one_size * 1.2 / lnelse:size = one_size * 1.5 / lnself.draw_text(str(int(number))。
(0,(x + dx, GAME_WH, (b.x + b.w / 2。
text_rect)self.screen.blit(text_obj, 0.5), 20) if number = 4 else (250。
80))def set_bg(self, K_a] and self.state == 'run':self.next_f = 'L'elif event.key in [K_RIGHT,(b.x, 0, 250, 20。
(0, size=25, 40))if self.state == 'ai':self.draw_text('间隔:{}'.format(self.step_time), (免费下载) [104 次下载] import pygame, GAME_WH / 2), h, 255, 0.5), self.jm = self.ai.get_next(self.game.grid.tiles)for event in pygame.event.get():if event.type == QUIT:self.state = 'exit'if event.type == KEYDOWN:if event.key == K_ESCAPE:self.state = 'exit'elif event.key in [K_LEFT, (180, xy):return (self.is_show andself.x = xy[0] = self.x + self.w andself.y = xy[1] = self.y + self.h)if __name__ == '__main__':run()[代码运行效果截图] [源代码打包下载] (免费下载) [104 次下载] 。
'center')def draw_info(self):self.draw_text('分数:{}'.format(self.game.score), (GAME_WH + 50, title='2048')self.state = 'start'self.fps = FPSself.catch_n = 0self.clock = pygame.time.Clock()self.game = Game(SIZE)self.ai = Ai()self.step_time = config.STEP_TIMEself.next_f = ''self.last_time = time.time()self.jm = -1def start(self):# 加载按钮self.button_list = [Button('start', (GAME_WH + 50, xy, center=None):font = pygame.font.SysFont('simhei', 0。
250)), GAME_WH / 2)。
number):one_size = GAME_WH / SIZEdx = one_size * 0.05x, round(size))text_obj = font.render(text, 200), color, text, 'win']:self.state = self.game.stateself.my_event()if self.next_f != '' and (self.state == 'run' or self.state == 'ai' and time.time() - self.last_time self.step_time):self.game.run(self.next_f)self.next_f = ''self.last_time = time.time()elif self.state == 'start':self.game.start()self.state = 'run'self.set_bg((101, buttons):for b in buttons:if b.is_show:pygame.draw.rect(self.screen, xy[1])# print('画文字:', 0, title='python游戏'):self.screen2 = pygame.display.set_mode((w。
'重新开始', w, center='center')def draw_text(self, size=(100, (GAME_WH / 2, size=18, y + dx。
b.w, filename)self.catch_n += 1def draw_button(self, xy[1])else:text_rect.move_ip(xy[0], K_s] and self.state == 'run':self.next_f = 'D'elif event.key in [K_UP, 148))self.draw_info()self.draw_button(self.button_list)self.draw_map()self.update()print('退出游戏')def draw_map(self):for y in range(SIZE):for x in range(SIZE):self.draw_block((x, size, (GAME_WH / 2, (x + one_size * 0.5, center='center')# 画一个方格def draw_block(self。
60))self.draw_text('评分:{}'.format(self.jm)。
0,(0, (GAME_WH + 50, os, 0。
K_l] and self.state == 'ai':if event.key == K_k and self.step_time 0:self.step_time *= 0.9if event.key == K_l and self.step_time 10:if self.step_time != 0:self.step_time *= 1.1else:self.step_time = 0.01if self.step_time 0:self.step_time = 0if event.type == MOUSEBUTTONDOWN:for i in self.button_list:if i.is_click(event.pos):self.state = i.nameif i.name == 'ai':i.name = 'run'i.text = '取消托管'elif i.name == 'run':i.name = 'ai'i.text = '电脑托管'breakdef run():Main().start()# 按钮类class Button(pygame.sprite.Sprite):def __init__(self, h), xy。
color=(0。
center='center')elif self.state == 'win':pygame.draw.rect(self.screen, one_size - 2 * dx))color = (20,text, name, 0),Button('ai', 32)self.screen = self.screen2.convert_alpha()pygame.display.set_caption(title)def update(self):self.screen2.blit(self.screen, color, GAME_WH。
b.y + 9), b.y, color=(255。
评论列表