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

前言

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

Pygame推箱子2021:经典版推箱子小游戏,一起回味童年经典掌机游戏~_第1张图片

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

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

一些简单的游戏吧!

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

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

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

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

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

Pygame推箱子2021:经典版推箱子小游戏,一起回味童年经典掌机游戏~_第2张图片

Pygame推箱子2021:经典版推箱子小游戏,一起回味童年经典掌机游戏~_第3张图片

正文

游戏小介绍:

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

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

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

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

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

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

Pygame推箱子2021:经典版推箱子小游戏,一起回味童年经典掌机游戏~_第4张图片

环境配置:

Python3、 Pycharm 、Pygame。

第三方库的安装:pip  install pygame



效果展示:

Pygame推箱子2021:经典版推箱子小游戏,一起回味童年经典掌机游戏~_第5张图片

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

代码展示:


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)

小结

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

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

完整的素材等:滴滴我吖!都免费地!

往期推荐阅读——

项目0.1  宝藏拼图神秘上线,三种玩法刷爆朋友圈—玩家直呼太上瘾了。

项目0.2 【Pygame小游戏】Python版有迷宫嘛?原来藏在个地方呀~

项目1.6 【Pygame小游戏】斗地主我见多了,BUT 这款开源欢乐斗地主,最让人服气~

项目1.7 【Pygame小游戏】神还原【欢乐无穷的双人坦克大战】小程序游戏,上手开玩~

还有更多更多源码等你来领区啦!

文章汇总——

汇总: Python文章合集 | (入门到实战、游戏、Turtle、案例等)

Pygame推箱子2021:经典版推箱子小游戏,一起回味童年经典掌机游戏~_第6张图片

你可能感兴趣的:(Python,Pygame实战,小程序,python,pygame,推箱子,游戏源码,源码合集)