2024年最新2024-2024京东Python面试真题解析,打工日常摸鱼——开心消消乐 但是python版 (真),2024年最新互联网公司招聘面试的形式

收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来

如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
img

正文

    if self.type == 1:
        Tree(Tree.energy_buy, Tree.energy_buy_position).draw(self.screen)
        if self.energy_full:
            self.load_text("energy is full!", (430, 310), 30, (255, 0, 0))
            pygame.display.flip()
            pygame.time.delay(500)
            self.energy_full = False
        if self.money_empty:
            self.load_text("money is not enough!", (410, 310), 30, (255, 0, 0))
            pygame.display.flip()
            pygame.time.delay(500)
            self.money_empty = False

**2.4 制作鼠标点击效果**



def mouse\_select(self, button, level, energy_num, money_num):
    """鼠标点击"""
    if button.type == MOUSEBUTTONDOWN:
        mouse_down_x, mouse_down_y = button.pos
        print(button.pos)
        if level == 0:
            if self.type == 0:          # 树界面
                for i in range(0, 10):
                    if Tree.position[i][0] < mouse_down_x < Tree.position[i][0] + self.fruit_width \
                            and Tree.position[i][1] - self.fruit_height < mouse_down_y < Tree.position[i][1]:
                        if energy_num <= 0:
                            self.type = 1
                        else:
                            level = i + 1
                if Tree.energy_num_position[0] < mouse_down_x < Tree.energy_num_position[0]+60 \
                        and Tree.energy_num_position[1]-60 < mouse_down_y < Tree.energy_num_position[1]:  # 精力60\*60
                    SoundPlay(SoundPlay.click)
                    self.type = 1
            else:               # 加精力弹窗界面
                if 408 < mouse_down_x < 600 and 263 < mouse_down_y < 313:    # 点加精力按钮
                    SoundPlay(SoundPlay.click_button)
                    if money_num < 50:
                        self.money_empty = True
                    if energy_num >= 30:
                        self.energy_full = True
                    elif energy_num < 30 and money_num >= 50:
                        energy_num += 5
                        money_num -= 50
                elif 619 < mouse_down_x < 638 and 158 < mouse_down_y < 177:   # 点叉号
                    self.type = 0
    if button.type == MOUSEBUTTONUP:
        pass
    return level, energy_num, money_num

**2.5 制作出现元素**



class Element(pygame.sprite.Sprite):
“”" 元素类 “”"
# 图标元组,包括6个小动物,
animal = (‘pic2/fox.png’, ‘pic2/bear.png’, ‘pic2/chick.png’, ‘pic2/eagle.png’, ‘pic2/frog.png’, ‘pic2/cow.png’)
ice = ‘pic2/ice.png’ # 冰层
brick = ‘pic2/brick.png’ # 砖
frame = ‘pic2/frame.png’ # 选中框
bling = (“pic2/bling1.png”, “pic2/bling2.png”, “pic2/bling3.png”, “pic2/bling4.png”, “pic2/bling5.png”,
“pic2/bling6.png”, “pic2/bling7.png”, “pic2/bling8.png”, “pic2/bling9.png”) # 消除动画

ice_eli = ('pic2/ice0.png', 'pic2/ice1.png', 'pic2/ice2.png', 'pic2/ice3.png', 'pic2/ice4.png', 'pic2/ice5.png',\
           'pic2/ice6.png', 'pic2/ice7.png', 'pic2/ice8.png')    # 消除冰块动画

# 得分图片
score_level = ('pic2/good.png', 'pic2/great.png', 'pic2/amazing.png', 'pic2/excellent.png', 'pic2/unbelievable.png')
none_animal = 'pic2/noneanimal.png'             # 无可消除小动物
stop = 'pic2/exit.png'       # 暂停键
stop_position = (20, 530)

def \_\_init\_\_(self, icon, position):
    super().__init__()
    self.image = pygame.image.load(icon).convert_alpha()
    self.rect = self.image.get_rect()
    self.rect.topleft = position         # 左上角坐标
    self.speed = [0, 0]
    self.init_position = position

def move(self, speed):
    self.speed = speed
    self.rect = self.rect.move(self.speed)
    if self.speed[0] != 0:    # 如果左右移动
        if abs(self.rect.left-self.init_position[0]) == self.rect[2]:
            self.init_position = self.rect.topleft
            self.speed = [0, 0]
    else:
        if abs(self.rect.top-self.init_position[1]) == self.rect[3]:
            self.init_position = self.rect.topleft
            self.speed = [0, 0]

def draw(self, screen):
    screen.blit(self.image, self.rect)

class Board(pygame.sprite.Sprite):
step_board = ‘pic2/step.png’ # 剩余步数板子
step = (‘pic2/0.png’, ‘pic2/1.png’, ‘pic2/2.png’, ‘pic2/3.png’, ‘pic2/4.png’, ‘pic2/5.png’,
‘pic2/6.png’, ‘pic2/7.png’, ‘pic2/8.png’, ‘pic2/9.png’, )
task_board = ‘pic2/task.png’ # 任务板子
ok = ‘pic2/ok.png’ # ok勾
# 关数板子
levelBoard = (‘pic2/level0.png’, ‘pic2/level1.png’, ‘pic2/level2.png’, ‘pic2/level3.png’, ‘pic2/level4.png’, ‘pic2/level5.png’,
‘pic2/level6.png’, ‘pic2/level7.png’, ‘pic2/level8.png’, ‘pic2/level9.png’, ‘pic2/level10.png’)
# xxx = ‘pic2/x.png’ # 叉掉
test = ‘pic2/test.png’
success_board = ‘pic2/successtest1.png’ # 过关成功板子
fail_board = ‘pic2/failBoard.png’ # 任务失败
step_add = ‘pic2/step_add.png’ # 增加步数
next = “pic2/next.png” # 下一关按钮
replay = “pic2/replay.png” # 重玩图片
stars = ‘pic2/startest.png’ # 星星图片
money = ‘pic2/money.png’ # 银币
energy = ‘pic2/energ.png’ # 精力
button_position = [[300, 465], [500, 465]]
starts_position = [[280+50, 340], [375+38, 340], [460+35, 340]]

def \_\_init\_\_(self, icon, position):
    super().__init__()
    self.image = pygame.image.load(icon).convert_alpha()
    self.speed = [0, 45]
    self.rect = self.image.get_rect()
    self.rect.bottomleft = position                  # 左下角为坐标值

def move(self):
    self.rect = self.rect.move(self.speed)
    if self.rect.bottom >= 543:
        self.speed = [0, -45]
    if self.speed == [0, -45] and self.rect.bottom <= 450:
        self.speed = [0, 0]

def draw(self, screen):
    screen.blit(self.image, self.rect)

**2.6 数组**



class Manager:
“”" 数组类 “”"
__screen_size = (900, 600)
screen = pygame.display.set_mode(__screen_size, DOUBLEBUF, 32)
__brick_size = 50
__bg = pygame.image.load(‘pic2/bg.png’).convert()
stop_width = 63
selected = [-1, -1] # 现选中[row, col]
exchange_sign = -1 # 未交换标志
last_sel = [-1, -1] # 上一次选中[row, col]
change_value_sign = False # 是否交换值标志,初始不交换
death_sign = True # 死图标志,初始不是死图
boom_sel = [-1, -1] # 四连消特效小动物所在位置 row,col
level = 0 # 当前关卡数 初始第0关
money = 100 # 金币
energy_num = 30 # 精力值
num_sign = True
type = 2 # 0代表游戏中; 1代表完成任务,过关; -1代表步数用完,任务未完成,过关失败; 2代表未游戏状态,板子界面
reset_mode = True # 是否重新布局(每关布局)
init_step = 15 # 每关规定步数
step = init_step # 代表游戏所剩余的步数
score = 0 # 得数
min = 20 # 分数中间值1
max = 50 # 分数中间值2
animal_num = [0, 0, 0, 0, 0, 0] # 本关消除各小动物的个数
ice_num = 0
success_board = Board(Board.success_board, [200, 0]) # 过关成功板
fail_board = Board(Board.fail_board, [200, 0]) # 任务失败板
height, width = 9, 9
row, col = 5, 5
ice_list = [[-1 for col in range(21)]for row in range(21)] # -1不画,1画冰
animal = [[-1 for col in range(21)]for row in range(21)] # -2消除的,-1不画,0-4小动物
list_x, list_y = (__screen_size[0] - 11 * __brick_size) / 2, (__screen_size[1] - 11 * __brick_size) / 2 # 矩阵坐标

def \_\_init\_\_(self, width, height):
    self.height = height
    self.width = width
    self.list_x = (Manager.__screen_size[0] - self.width \* Manager.__brick_size) / 2
    self.list_y = (Manager.__screen_size[1] - self.height \* Manager.__brick_size) / 2
    self.row, self.col = Manager.xy_rc(self.list_x, self.list_y)
    self.list_x, self.list_y = Manager.rc_xy(self.row, self.col)
    self.ice_list = [[-1 for col in range(21)]for row in range(21)]
    self.animal = [[-1 for col in range(21)]for row in range(21)]
    self.reset_animal()

def reset\_animal(self):
    for row in range(self.row, self.row + self.height):
        for col in range(self.col, self.col + self.width):
            self.animal[row][col] = random.randint(0, 5)

@staticmethod
def rc\_xy(row, col):
    """row col 转 x,y坐标"""
    return int(Manager.list_x + (col-Manager.col)\*Manager.__brick_size), int\
        (Manager.list_y+(row-Manager.row)\*Manager.__brick_size)

@staticmethod
def xy\_rc(x, y):
    """x,y坐标转row col"""
    return int((y-Manager.list_y)/Manager.__brick_size+Manager.row), int\
        ((x-Manager.list_x)/Manager.__brick_size+Manager.col)

@staticmethod
def draw\_brick(x, y):
    brick = Element(Element.brick, (x, y))
    Manager.screen.blit(brick.image, brick.rect)

def draw\_task(self, task_animal_num, which_animal, \
              board_position=(400, 90), animal_position=(430, 35), txt_position=(455, 60)):

**2.7 制作人物画板**



    """画任务板子"""
    txt_size = 24
    txt_color = (0, 0, 0)
    Board(Board.task_board, board_position).draw(self.screen)
    if which_animal == 6:
        task_animal = Element(Element.ice, animal_position)
    else:
        task_animal = Element(Element.animal[which_animal], animal_position)
    task_animal.image = pygame.transform.smoothscale(task_animal.image, (40, 40))
    task_animal.draw(self.screen)
    if which_animal == 6:
        if task_animal_num-self.ice_num <= 0:
            Board(Board.ok, (txt_position[0], txt_position[1]+15)).draw(self.screen)
        else:
            self.load_text(str(task_animal_num-self.ice_num), txt_position, txt_size, txt_color)
    else:
        if task_animal_num - self.animal_num[which_animal] <= 0:
            Board(Board.ok, (txt_position[0], txt_position[1]+15)).draw(self.screen)
        else:
            self.load_text(str(task_animal_num - self.animal_num[which_animal]), txt_position, txt_size, txt_color)

**2.8 完整代码**


### 由于代码太多太多了如下图所示:所以还是大家自己拿完整的代码哈!


![在这里插入图片描述](https://img-blog.csdnimg.cn/4ef8bd2edfa64ed687227407f984371f.png)


### 三、效果展示(仅部分)


**3.1 初始页面**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/262c060f809049efaa97d3e30b8f2a4e.png)**3.2 第一关画面**


![在这里插入图片描述](https://img-blog.csdnimg.cn/f75c22e245684e0692926f25bee38f18.png)  


### 最后

> **🍅 硬核资料**:关注即可领取PPT模板、简历模板、行业经典书籍PDF。  
> **🍅 技术互助**:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。  
> **🍅 面试题库**:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。  
> **🍅 知识体系**:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)**
![img](https://img-blog.csdnimg.cn/img_convert/b223b999dd658fb6cf10cbdcdc624d98.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)**
[外链图片转存中...(img-5Npht9wE-1713795572432)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值