Python实现简单的2048小游戏

本文实例为大家分享了Python实现简单的2048小游戏的具体代码,供大家参考,具体内容如下

运行效果:

1.项目结构

2.代码

configs.py

import argparse

def parse_args():
 parser = argparse.ArgumentParser(description='Game 2048')

 # Form
 """
 screen_width: Width of the form
 screen_height: Height of the form
 """
 parser.add_argument('--screen_width', default=400)
 parser.add_argument('--screen_height', default=500)

 # Block
 """
 block_gap: Gap between two blocks
 block_size: Size of a block
 block_arc: Arc of a block
 """
 parser.add_argument('--block_gap', default=10)
 parser.add_argument('--block_size', default=86)
 parser.add_argument('--block_arc', default=10)

 return parser.parse_args()

main.py

import configs
from Game2048 import Game2048

def main(args):
 """
 screen_width: Width of the form
 screen_height: Height of the form
 block_gap: Gap between two blocks
 block_size: Size of a block
 """
 screen_width = args.screen_width
 screen_height = args.screen_height
 block_gap = args.block_gap
 block_size = args.block_size
 block_arc = args.block_arc

 game = Game2048(screen_width, screen_height, block_gap, block_size, block_arc)
 game.Form()

if __name__ == '__main__':
 args = configs.parse_args()
 main(args)

Game2048.py

import os
import sys
import numpy
import random
import pygame

"""
Form(): 窗口的设置
Action(): 用户行为: 按键/鼠标
InitGame(): 游戏初始化
CreatNum(): 随机在一个位置生成一个数
GetEmpty(): 获取空白方格
MoveUp(): 向上移动
MoveDown(): 向下移动
MoveLeft(): 向左移动
MoveRight(): 向右移动
JudgeGameOver(): 判断游戏是否结束
JudgeGameSuccess(): 判断游戏是否成功
Paint(): 绘制表格
"""

class Game2048(object):
 # 初始化函数
 def __init__(self, screen_width, screen_height, block_gap, block_size, block_arc):
 """
 :param screen_width: Width of the form
 :param screen_height: Height of the form
 :param block_gap: Gap between two blocks
 :param block_size: Size of a block
 :param size: Dimension of matrix
 :param martix: Zero matrix
 :param is_over: Sign of the end of the game
 :param is_success: Sign of the success of the game
 :param form: The form
 :param score: score
 :param title_font: Title type and size of form
 :param score_font: Scores type and size
 :param tips_font: Tips type and type
 :param font: The numberes
 :param isadd: Add number or not
 """
 """ 窗口 """
 self.screen_width = screen_width # 窗口的宽 400
 self.screen_height = screen_height # 窗口的高 500
 self.block_gap = block_gap # 方块间隙 10
 self.block_size = block_size # 方块大小 86
 self.block_arc = block_arc # 方块的弧度
 self.size = 4 # 矩阵 4 * 4
 self.martix = [] # 初始化矩阵 4 * 4 的 0 矩阵
 self.form = ''

 """ 其他 """
 self.is_over = False # 游戏是否结束
 self.is_success = False # 游戏是否成功
 self.score = 0 # 分数
 self.isadd = True # 是否添加数字
 self.block_color = { # 方块颜色
  0: (205, 193, 180),
  2: (238, 228, 218),
  4: (237, 224, 200),
  8: (242, 177, 121),
  16: (245, 149, 99),
  32: (246, 124, 95),
  64: (246, 94, 59),
  128: (237, 207, 114),
  256: (237, 204, 97),
  512: (237, 200, 80),
  1024: (237, 197, 63),
  2048: (237, 194, 46)
 }
 self.nums_color = {
  # 0: (0, 0, 0),
  0: (205, 193, 180),
  2: (0, 0, 0),
  4: (0, 0, 0),
  8: (255, 255, 255),
  16: (255, 255, 255),
  32: (255, 255, 255),
  64: (255, 255, 255),
  128: (255, 255, 255),
  256: (255, 255, 255),
  512: (255, 255, 255),
  1024: (255, 255, 255),
  2048: (255, 255, 255)
 }

 """ 字体 """
 self.title_font = '' # 窗口标题字体类型及大小: 2048
 self.score_font = '' # 分数字体类型及大小
 self.tips_font = '' # 说明字体类型及大小
 self.font = '' # 数字字体

 # 窗口的设置
 def Form(self):
 """
 init(): 初始化所有导入的 pygame 模块
 display.set_caption(title): 设置窗口的标题
 display.set_mode(): 初始化一个准备显示的窗口或屏幕
 display.update(): 使绘制的显示到窗口上
 """
 pygame.init() # 初始化所有导入的 pygame 模块
 pygame.display.set_caption("Game2048") # 窗口标题
 os.environ['SDL_VIDEO_CENTERED'] = '1' # 窗口居中显示
 self.form = pygame.display.set_mode([self.screen_width, self.screen_height], 0, 0) # 窗口大小
 self.InitGame() # 矩阵的初始化

 while True:
  self.Action() # 用户行为: 按键/鼠标
  self.Paint() # 表格绘制
  pygame.display.update() # 使绘制的显示到窗口上

 # 用户行为: 按键/鼠标
 def Action(self):
 for event in pygame.event.get(): # pygame.event.get(): 获取所有消息并将其从队列中删除
  if event.type == pygame.QUIT: # pygame.QUIT: 窗口右上角的红 ×
  sys.exit() # sys.exit()函数是通过抛出异常的方式来终止进程的
  elif event.type == pygame.KEYDOWN:
  """
  pygame.KEYDOWN 按下键盘时
  pygame.KEYUP 释放键盘时
  """
  """
  K_ESCAPE: ESC
  K_UP: ↑
  K_DOWN: ↓
  K_LEFT: ←
  K_RIGHT: →
  """

  """ 重新开始游戏 """
  if event.key == pygame.K_ESCAPE:
   # print('ESC')
   self.InitGame() # 游戏初始化

  """ ↑ """
  if event.key == pygame.K_UP and self.is_over == False:
   # print('UP')
   self.MoveUp()
   # self.CreatNum()

  """ ↓ """
  if event.key == pygame.K_DOWN and self.is_over == False:
   # print('DOWN')
   self.MoveDown()
   # self.CreatNum()

  """ ← """
  if event.key == pygame.K_LEFT and self.is_over == False:
   # print('LEFT')
   self.MoveLeft()
   # self.CreatNum()

  """ → """
  if event.key == pygame.K_RIGHT and self.is_over == False:
   # print('RIGHT')
   self.MoveRight()
   # self.CreatNum()

 # 游戏初始化
 def InitGame(self):
 self.score = 0
 self.is_over = False
 self.is_success = False
 self.martix = numpy.zeros([self.size, self.size])

 # 随机生成两个数
 for i in range(2):
  self.isadd = True
  self.CreatNum()

 # 随机在一个位置生成一个数
 def CreatNum(self):

 list = self.GetEmpty() # 获取空白方格下标
 if list and self.isadd:
  """ 随机生成的数字 """
  # 2, 4出现概率3:1
  # random.randint(m, n): 随机生成[m, n]
  value = 4 if random.randint(0, 3) % 3 == 0 else 2

  """ 获取随机位置下标 """
  x, y = random.sample(list, 1)[0]

  """ 在随机位置上生成随机数字 """
  self.martix[x][y] = value

  self.isadd = False

  # print('CreatNum: {}'.format(value), (x, y))
  # print(self.martix)

 # 获取空白方格
 def GetEmpty(self):
 list = []
 for i in range(4):
  for j in range(4):
  if self.martix[i][j] == 0:
   list.append([i, j])
 return list

 # 向上移动
 def MoveUp(self):
 # print('up')
 """ Move Up """
 """
 向上移动,只需考虑第二行到第四行
 共分为两种情况:
 1、当前数字上边无空格,即上边值不为 0
  a. 当前数字与上边数字相等,合并
  b. 当前数字与上边数字不相等,continue
 2、当前数字上边有空格,即上边值为 0, 上移
 """
 for j in range(4):
  index = 0
  for i in range(1, 4):
  if self.martix[i][j] > 0:
   if self.martix[i][j] == self.martix[index][j]:
   # 当前数字 == 上边数字
   """ 分数: 当前数字 + 上边数字
    数值: 上边数字 = 上边数字 + 当前数字, 当前数字 = 0 """
   self.score += self.martix[i][j] + self.martix[index][j]
   self.martix[index][j] = self.martix[i][j] + self.martix[index][j]
   self.martix[i][j] = 0
   index += 1
   self.isadd = True
   # 当前数字与上边数字不相等,continue 可以省略不写
   elif self.martix[index][j] == 0:
   # 当前数字上边有0
   """ 分数: 不变
    数值: 上边数字 = 当前数字, 当前数字 = 0 """
   self.martix[index][j] = self.martix[i][j]
   self.martix[i][j] = 0
   self.isadd = True
   else:
   index += 1
   if self.martix[index][j] == 0:
    # index相当于慢指针,j相当于快指针
    # 也就是说快指针和慢指针中间可能存在一个以上的空格,或者index和j并未相邻
    # 上边数字 = 0
    """ 分数: 不变
    数值: 上边数字 = 当前数字, 当前数字 = 0 """
    self.martix[index][j] = self.martix[i][j]
    self.martix[i][j] = 0
    self.isadd = True
 # print('up')
 # print(self.martix)

 # 向下移动
 def MoveDown(self):
 # print('down')
 """ Move Down """
 """
 向下移动,只需考虑第一列到第三列
 共分为两种情况:
 1、当前数字下边无空格,即下边值不为 0
  a. 当前数字与下边数字相等,合并
  b. 当前数字与下边数字不相等,continue
 2、当前数字下边有空格,即下边值为 0, 下移
 """
 for j in range(4):
  index = 3
  for i in range(2, -1, -1):
  if self.martix[i][j] > 0:
   if self.martix[i][j] == self.martix[index][j]:
   # 当前数字 == 下边数字
   """ 分数: 当前数字 + 下边数字
    数值: 下边数字 = 下边数字 + 当前数字, 当前数字 = 0 """
   self.score += self.martix[i][j] + self.martix[index][j]
   self.martix[index][j] = self.martix[i][j] + self.martix[index][j]
   self.martix[i][j] = 0
   index -= 1
   self.isadd = True
   # 当前数字与下边数字不相等,continue 可以省略不写
   elif self.martix[index][j] == 0:
   # 当前数字下边有0
   """ 分数: 不变
    数值: 下边数字 = 当前数字, 当前数字 = 0 """
   self.martix[index][j] = self.martix[i][j]
   self.martix[i][j] = 0
   self.isadd = True
   else:
   index -= 1
   if self.martix[index][j] == 0:
    # index相当于慢指针,j相当于快指针
    # 也就是说快指针和慢指针中间可能存在一个以上的空格,或者index和j并未相邻
    # 下边数字 = 0
    """ 分数: 不变
    数值: 下边数字 = 当前数字, 当前数字 = 0 """
    self.martix[index][j] = self.martix[i][j]
    self.martix[i][j] = 0
    self.isadd = True

 # print('down')
 # print(self.martix)

 # 向左移动
 def MoveLeft(self):
 # print('left')
 """
 Move Left
 """
 """
 向左移动,只需考虑第二列到第四列
 共分为两种情况:
 1、当前数字左边无空格,即左边值不为 0
  a. 当前数字与左边数字相等,合并
  b. 当前数字与左边数字不相等,continue
 2、当前数字左边有空格,即左边值为 0, 左移
 """
 for i in range(4):
  index = 0
  for j in range(1, 4):
  if self.martix[i][j] > 0:
   if self.martix[i][j] == self.martix[i][index]:
   # 当前数字 == 左边数字
   """ 分数: 当前数字 + 左边数字
    数值: 左边数字 = 左边数字 + 当前数字, 当前数字 = 0 """
   self.score += self.martix[i][j] == self.martix[i][index]
   self.martix[i][index] = self.martix[i][j] + self.martix[i][index]
   self.martix[i][j] = 0
   index += 1
   self.isadd = True
   # 当前数字与左边数字不相等,continue 可以省略不写
   elif self.martix[i][index] == 0:
   # 当前数字左边有0
   """ 分数: 不变
    数值: 左边数字 = 当前数字, 当前数字 = 0 """
   self.martix[i][index] = self.martix[i][j]
   self.martix[i][j] = 0
   self.isadd = True
   else:
   index += 1
   if self.martix[i][index] == 0:
    # index相当于慢指针,j相当于快指针
    # 也就是说快指针和慢指针中间可能存在一个以上的空格,或者index和j并未相邻
    # 左边数字 = 0
    """ 分数: 不变
    数值: 左边数字 = 当前数字, 当前数字 = 0 """
    self.martix[i][index] = self.martix[i][j]
    self.martix[i][j] = 0
    self.isadd = True
 # print('left')
 # print(self.martix)

 # 向右移动
 def MoveRight(self):
 # print('right')
 """
 Move Right
 """
 """
 向右移动,只需考虑第一列到第三列
 共分为两种情况:
 1、当前数字右边无空格,即右边值不为 0
  a. 当前数字与右边数字相等,合并
  b. 当前数字与右边数字不相等,continue
 2、当前数字右边有空格,即右边值为 0, 右移
 """
 for i in range(4):
  index = 3
  for j in range(2, -1, -1):
  if self.martix[i][j] > 0:
   if self.martix[i][j] == self.martix[i][index]:
   # 当前数字 == 右边数字
   """ 分数: 当前数字 + 右边数字
    数值: 右边数字 = 右边数字 + 当前数字, 当前数字 = 0 """
   self.score += self.martix[i][j] + self.martix[i][index]
   self.martix[i][index] = self.martix[i][j] + self.martix[i][index]
   self.martix[i][j] = 0
   index -= 1
   self.isadd = True
   # 当前数字与左边数字不相等,continue 可以省略不写
   elif self.martix[i][index] == 0:
   # 当前数字右边有0
   """ 分数: 不变
    数值: 右边数字 = 当前数字, 当前数字 = 0 """
   self.martix[i][index] = self.martix[i][j]
   self.martix[i][j] = 0
   self.isadd = True
   else:
   index -= 1
   if self.martix[i][index] == 0:
    # index相当于慢指针,j相当于快指针
    # 也就是说快指针和慢指针中间可能存在一个以上的空格,或者index和j并未相邻
    # 右边数字 = 0
    """ 分数: 不变
    数值: 右边数字 = 当前数字, 当前数字 = 0 """
    self.martix[i][index] = self.martix[i][j]
    self.martix[i][j] = 0
    self.isadd = True
 # print('right')
 # print(self.martix)

 # 判断游戏是否结束
 def JudgeGameOver(self):
 # 当空白空格不为空时,即游戏未结束
 zerolist = self.GetEmpty()
 if zerolist:
  return False

 # 当空白方格为空时,判断是否存在可合并的方格
 for i in range(3):
  for j in range(3):
  if self.martix[i][j] == self.martix[i][j + 1]:
   return False
  if self.martix[i][j] == self.martix[i + 1][j]:
   return False

 # 若不满足以上两种情况,则游戏结束
 return True

 # 判断游戏是否成功
 def JudgeGameSuccess(self):
 # 检查是否有2048
 if self.martix.max() == 2048:
  return True
 return False

 # 绘制表格
 def Paint(self):
 """ 游戏背景 """
 # fill(color): 填充某一种颜色
 self.form.fill((220, 220, 220))

 """ 字体设置 """
 # 初始化字体
 pygame.font.init()
 # 添加标题
 # f = pygame.font.get_fonts() #: 获取字体样式
 # pygame.font.Font.render(): 在一个新 Surface 对象上绘制文本
 self.title_font = pygame.font.SysFont('幼圆', 50, True)
 title_text = self.title_font.render('2048', True, (0, 0, 0))
 self.form.blit(title_text, (50, 10))

 # 添加分数: 得分: 0
 pygame.draw.rect(self.form, (128, 128, 128), (250, 0, 120, 60))
 self.score_font = pygame.font.SysFont('幼圆', 28, True)
 score_text = self.score_font.render('得 分', True, (0, 0, 0))
 self.form.blit(score_text, (275, 0))

 digtial_score = self.score_font.render(str(int(self.score)), True, (255, 250, 250))
 self.form.blit(digtial_score, (280, 30))

 # 添加游戏说明
 self.tips_font = pygame.font.SysFont('simsunnsimsun', 20)
 tips_text = self.tips_font.render('操作: ↑ ↓ ← →, 按esc键重新开始', True, (0, 0, 0))
 self.form.blit(tips_text, (25, 70))

 """ 绘制方格 """
 for i in range(4):
  for j in range(4):
  # (x, y) 方块的初始位置
  x = j * self.block_size + (j + 1) * self.block_gap
  y = i * self.block_size + (i + 1) * self.block_gap
  # 绘制方块
  value = int(self.martix[i][j])
  # print(value)
  pygame.draw.rect(self.form, self.block_color[value], (x + 5, y + 100, self.block_size, self.block_size),
     border_radius=self.block_arc)

  # 数字字体即大小
  if value < 10:
   self.font = pygame.font.SysFont('simsunnsimsun', 46, True) # 数字2、4、8
   value_text = self.font.render(str(value), True, self.nums_color[value])
   self.form.blit(value_text, (x + 35, y + 120))
  elif value < 100:
   self.font = pygame.font.SysFont('simsunnsimsun', 40, True) # 数字16, 32, 64
   value_text = self.font.render(str(value), True, self.nums_color[value])
   self.form.blit(value_text, (x + 25, y + 120))
  elif value < 1000:
   self.font = pygame.font.SysFont('simsunnsimsun', 34, True) # 数字128, 256, 512
   value_text = self.font.render(str(value), True, self.nums_color[value])
   self.form.blit(value_text, (x + 15, y + 120))
  else:
   self.font = pygame.font.SysFont('simsunnsimsun', 28, True) # 数字1024, 2048
   value_text = self.font.render(str(value), True, self.nums_color[value])
   self.form.blit(value_text, (x + 5, y + 120))

 # 新增数字
 self.CreatNum()

 """ 如果游戏结束 """
 self.is_over = self.JudgeGameOver()
 if self.is_over:
  over_font = pygame.font.SysFont("simsunnsimsun", 60, True)
  str_text = over_font.render('Game Over!', True, (255, 255, 255))
  self.form.blit(str_text, (30, 220))

 """ 如果游戏成功 """
 self.is_success = self.JudgeGameSuccess()
 if self.is_success:
  success_font = pygame.font.SysFont("simsunnsimsun", 60, True)
  str_text = success_font.render('Successful!', True, (178, 34, 34))
  self.form.blit(str_text, (10, 220))

注意这里需要导入两个包(numpy,pygame),然后运行main文件即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 200行python代码实现2048游戏

    Python实战系列用于记录实战项目中的思路,代码实现,出现的问题与解决方案以及可行的改进方向 本文为第2篇–200行Python代码实现2048 一.分析与函数设计 1.1 游戏玩法 2048这款游戏的玩法很简单,每次可以选择上下左右滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢,系统也会在空白的地方乱数出现一个数字方块,相同数字的方块在靠拢.相撞时会相加.(介绍来自百度百科) 1.2 函数设计 _init _() 初始化4*4游戏地图,分数等游戏基本数据 is_gameover() 判

  • python pygame实现2048游戏

    实现2048相对来说比较简单,用4*4的二维数组保存地图,pygame.key.get_pressed()获取键盘操作,详见代码. 效果图 代码 # -*- coding: utf-8 -*- #!/usr/bin/python ''' Created on May 31, 2014 @author: yuanzi ''' import random import sys import pygame from pygame.locals import * PIXEL = 150 SCORE_PI

  • 200 行python 代码实现 2048 游戏

    创建游戏文件 2048.py 首先导入需要的包: import curses from random import randrange, choice from collections import defaultdict 主逻辑 用户行为 所有的有效输入都可以转换为"上,下,左,右,游戏重置,退出"这六种行为,用 actions 表示 actions = ['Up', 'Left', 'Down', 'Right', 'Restart', 'Exit'] 有效输入键是最常见的 W(上

  • Python新手实现2048小游戏

    接触 Python 不久,看到很多人写2048,自己也捣鼓了一个,主要是熟悉Python语法. 程序使用Python3 写的,代码150行左右,基于控制台,方向键使用输入字符模拟. 演示图片 2048.py # -*- coding:UTF-8 -*- #! /usr/bin/python3 import random v = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] def display(v, score): '''显示

  • 一步步教你用Python实现2048小游戏

    前言 2048游戏规则:简单的移动方向键让数字叠加,并且获得这些数字每次叠加后的得分,当出现2048这个数字时游戏胜利.同时每次移动方向键时,都会在这个4*4的方格矩阵的空白区域随机产生一个数字2或者4,如果方格被数字填满了,那么就GameOver了. 主逻辑图 逻辑图解:黑色是逻辑层,蓝色是外部方法,红色是类内方法,稍后即可知道~ 下面容我逐行解释主逻辑main()函数,并且在其中穿叉外部定义的函数与类. 主逻辑代码解读(完整代码见文末) 主逻辑main如下,之后的是对主函数中的一些方法的解读

  • python实现2048小游戏

    2048的python实现.修改自某网友的代码,解决了原网友版本的两个小bug: 1. 原版游戏每次只消除一次,而不是递归消除.如 [2 ,2 ,2 ,2] 左移动的话应该是 [4, 4, 0, 0] , 而不是[8 , 0 , 0 ,0] 2. 对游戏结束的侦测有bug,已经改正. 2048game.py # -*- coding: utf-8 -*- """ Created on Tue Jul 1 14:15:39 2014 @author: kelvin "

  • 用Python写一个无界面的2048小游戏

    以前游戏2048火的时候,正好用其他的语言编写了一个,现在学习python,正好想起来,便决定用python写一个2048,由于没学过python里面的界面编程,所以写了一个极其简单的无界面2048.游戏2048的原理和实现都不难,正好可以拿来练手,要是不知道这游戏的话,可以去网上查一下,或者下载一个到手机来玩一下,我就不在说其原理.我知道不放图的话大家一点兴趣都没,下面首先放一张游戏成型图,然后我们在来讲如何一步步用最基础的知识来实现. 一.生成4*4的矩阵 游戏的第一步便是生成一个4*4的矩

  • Python实现简单的2048小游戏

    本文实例为大家分享了Python实现简单的2048小游戏的具体代码,供大家参考,具体内容如下 运行效果: 1.项目结构 2.代码 configs.py import argparse def parse_args(): parser = argparse.ArgumentParser(description='Game 2048') # Form """ screen_width: Width of the form screen_height: Height of the

  • Python制作简易版2048小游戏

    目录 目标效果 设计开始 步骤一 步骤二 步骤三 步骤四 步骤五 今天我们来动手实现一款2048小游戏.这款游戏的精髓就玩家能够在于通过滑动屏幕合并相同数字,直到不能再合并为止.玩法可以说是非常的简单,但挑战性也是十足的.话不多说,让我们从0开始实现! 目标效果 大致要实现的效果如下: 设计开始 首先简单分析一下游戏的逻辑: 输入移动方向,游戏内所有方块都朝指定方向移动 同方向移动的方块,数字相同则合并,然后生成一个合并的方块 合并后生成新的方块,无法生成新方块时游戏结束 用一系列的颜色来区分不

  • python实现简单贪吃蛇小游戏

    本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下 1. 导入游戏库 import pgzrun import random 2.游戏初始化 # 窗口大小 WIDTH = 600 HEIGHT = 480 # 贪吃蛇 bodys = [ [100,100],[80,100], [60,100], [40,100], [20,100]] head = [100,100] d = 'right' # 食物 food = [290,290] # 得分 score=0 3

  • python实现简单飞机大战小游戏

    为了熟悉Python基础语法,学习了一个经典的案例:飞机大战,最后实现效果如下: 实现步骤: ①下载64位对应python版本的pygame:pygame-1.9.6-cp38-cp38-win_amd64.whl ② 更新pip:python -m pip install --upgrade pip ③ 安装pygame:pip install pygame-1.9.6-cp38-cp38-win_amd64.whl ④ 实现代码如下: import sys  # 导入系统模块 import

  • Python实现简单2048小游戏

    简单的2048小游戏 不多说,直接上图,这里并未实现GUI之类的,需要的话,可自行实现: 接下来就是代码模块,其中的2048游戏原来网络上有很多,我就不详细写上去了,都写在注释里面了.唯一要注意的就是需要先去了解一下矩阵的转置,这里会用到 import random board = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] # 打印游戏界面 def display(board, score): print('{0:4} {1

  • 原生js实现2048小游戏

    2048小游戏,供大家参考,具体内容如下 首先2048小游戏离不开16个格子,我们通过html和css创建好对应的标签和样式,然后开始js逻辑 <div id="box">//一个盒子里面16个小div <div id="son"></div> <div id="son"></div> <div id="son"></div> <div

  • 用Python手把手教你实现2048小游戏

    一.开发环境 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 二.环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 三.原理介绍 "使用方向键移动方块,两个数字相同的方块撞在一起后,将会合并为一个数字是原来两倍的新方块.游戏的时候尽可能多地合并这些数字方块就行了." 大概了解了游戏规则之后,我们就可以开始写这个游戏啦~首先,进行一下游戏初始化操作并播放一首自己喜欢的游戏背景音乐: # 游戏初始化 pygame.i

  • Python+Pygame制作简易版2048小游戏

    目录 导语 正文 主要代码 效果图 导语 哈喽!大家好,我是栗子,感谢大家的支持! 新的一天,新气象,程序猿们的日常开始敲敲敲,改改改——今天给大家来一款简单的小游戏! 2048小游戏——准确的来说确实是一个简单版本的! 呐呐呐 ,主要是担心很多小伙伴儿直接上界面版本的看不懂,所以做了这款简单的2048,先看这篇简单版本的吧! 正文 为了搞懂这个游戏的规则,小编去直接下载了一款2048的小游戏,上手玩了一波! 然后.........完全停不下来!23333~ 玩法: 用手指或键盘上下左右滑动,将

  • python反编译教程之2048小游戏实例

    目录 一.背景 二.工具准备 1.pyinstxtractor.py脚本用于反编译python 2.winhex用于编辑16进制的软件 三.反编译 1.放置脚本 2.运行脚本 3.找到软件名文件和struct文件 4.托入winhex进行对比 5.将struct多出的那一行复制到puzzle前面 6.更改其后缀为.pyc 7.安装第三方库uncompyle 8.python版本为3.8以下可以调用uncompyle 9.python版本为3.8以上可以选择在线工具(.pyc>.py) 10.最后

随机推荐