Pygame推箱子2021:经典版推箱子小游戏,一起回味童年经典掌机游戏~

533 阅读4分钟

前言

嗨!我的小可爱们早上好~

刚过完双十二,又要过圣诞节了!最近写了很多关于圣诞节的内容撒~

BUT 国外的节日可能我们过的比较少,所以阅读量都不是很高⛏。所以栗子决定继续研究爬虫跟

一些简单的游戏吧!

至于之前的爬虫系列文章(特此声明一下下:很多人等着的,但是我写完之后很多文章都是说版权

不明,爬虫的内容貌似都很难通过,我把很多内容删除之后,有的才能过,大家将就着看吧

看不懂的话:记得找到我的群哈大家一起学习交流一下!)

安啦!最近再给大家研究推箱子的游戏项目,刚做出来一款特别特别简易版本的。

颜值可能不过关,但是可以先从简单的学起来哈~(有时间会给大家升级的🤫)

正文

游戏小介绍:

《推箱子》现在有许多同名游戏,游戏界面十分相似。

我小时候玩的那一款,时间久远,已经模模糊糊了。无法确定是哪一款。

不过过关方式都是一样的。 散落的箱子和预设的坐标。主角小人儿在界面上把箱子推来推去,将

箱子全部推到预设坐标上就算赢。 道路蜿蜒曲折,一不留神就会把自己的路线堵死。 其间需要观

察布局、构思先后顺序、设计路线 一关比一关的箱子更多,路线更复杂。 这样看来,整个游戏

不就是箱子推来推去嘛……可竟也津津有味地很是热衷了一段时间,直到通关。

环境配置:

Python3、 Pycharm 、Pygame。

第三方库的安装:pip install pygame

效果展示:

嘿嘿——是有点儿简单了哈~下次,下次一定给大家升级嘛!

代码展示:

import pygame
import sys
from pygame.locals import*
import numpy as np
pygame.init()
rect_width=50#一个格子的宽度
size=width,height=500,500
COLOR=(255,0,0)#箱子的颜色
wall_color=(0,0,255)#墙的颜色
x_rect=int(width/rect_width)
y_rect=int(height/rect_width)#长宽格子有多个

bg=(100,180,180)#背景的颜色
tar_color=(255,0,255)#目标颜色
man_color=(40,40,40)#玩家的颜色
screen=pygame.display.set_mode(size)
pygame.display.set_caption("推箱子")
speed=[-1,0]
font=pygame.font.Font(None,20)
box=[[4,4],[6,4],[4,5],[5,6]]#箱子所在的位置
wall=[[3,1],[3,2],[3,3],[4,1],[5,1],[5,2],[5,3]\
      ,[6,3],[7,3],[8,3],[8,4],[8,5],[7,5],[6,5]\
      ,[6,6],[6,7],[6,8],[5,8],[4,8],[4,7],[4,6]\
      ,[3,6],[2,6],[1,6],[1,5],[1,4],[2,4],[3,4]]#墙所在的位置

target1=[[2,5],[4,2],[7,4],[5,7]]
man_pos=[5,5]
def get_rect(row,column):#计算应该在哪里画方格,以右上角为点。
    x1=rect_width*row
    y1=rect_width*column

    return (x1,y1,rect_width,rect_width)
    
def move_man(speed):
    global man_pos
    next_pos=[man_pos[0]+speed[0],man_pos[1]+speed[1]]
    if next_pos in wall:
        pass
    elif next_pos in box:
        box_next=[next_pos[0]+speed[0],next_pos[1]+speed[1]]
        if box_next not in wall and box_next not in box:
            man_pos=next_pos
            box.remove(next_pos)
            box.append(box_next)
        else:
            pass
    else:#如果下一个位置是空
        man_pos=next_pos
def draw_box(box):
    for i in box:
        pygame.draw.rect(screen,COLOR,get_rect(i[0],i[1]),0)

def draw_tar(tar):
    for i in tar:
        pygame.draw.ellipse(screen,tar_color,get_rect(i[0],i[1]),4)

def draw_wall(wall):
    for i in wall:
        pygame.draw.rect(screen, wall_color, get_rect(i[0], i[1]), 0)

def draw_man(pos):
    r1=get_rect(pos[0],pos[1])
    pygame.draw.circle(screen,man_color,(int(pos[0]*rect_width+rect_width/2),int(pos[1]*rect_width+rect_width/2)),25,0)

while True:
    speed=[0,0]
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
        
        if event.type==KEYDOWN:
            if event.key==K_LEFT:
                speed=[-1,0]
            if event.key==K_RIGHT:
                speed=[1,0]
            if event.key==K_UP:
                speed=[0,-1]
            if event.key==K_DOWN:
                speed=[0,1]
    screen.fill(bg)
    move_man(speed)
    draw_box(box)
    draw_wall(wall)
    draw_tar(target1)
    draw_man(man_pos)
    pygame.display.flip()
    pygame.time.delay(180)

小结

开源**,**感兴趣的可以研究下源码的撒,虽然只有一关......好可怜。

有大佬的话也可以优化下(也许、应该、或许、如果、有可能的话代码让我嫖一下也行,嘻嘻)

源码基地——

私信小编06或者点击这行蓝色字体即可免费获取哈!

往期推荐推荐——

项目1.1 GIF制作神奇(斗罗大陆为例)

【Python神器】推荐这款傻瓜式GIF制作工具,以后别再说不会了(好用到爆~)

项目2.7 圣诞快乐🎄你的🎁已送达!

【圣诞快乐】叮咚 没人送你圣诞礼物没有关系,可以找我啊?只要你开口 我都没有~

项目2.8 圣诞快乐!🎄
【圣诞快乐】闻到圣诞的气息了,喜欢的节日在慢慢来临~祝大家Merry Christmas。

项目1.0 超级玛丽

程序员自制游戏:超级玛丽100%真实版,能把你玩哭了~【附源码】

项目1.1 扫雷

Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......

🍓文章汇总——

项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在文章汇总哦!!欢迎阅读~)