嗨!我的小可爱们早上好~
刚过完双十二,又要过圣诞节了!最近写了很多关于圣诞节的内容撒~
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)
开源,感兴趣的可以研究下源码的撒,虽然只有一关......好可怜。
有大佬的话也可以优化下(也许、应该、或许、如果、有可能的话代码让我嫖一下也行,嘻嘻)
完整的素材等:滴滴我吖!都免费地!
项目0.1 宝藏拼图神秘上线,三种玩法刷爆朋友圈—玩家直呼太上瘾了。
项目0.2 【Pygame小游戏】Python版有迷宫嘛?原来藏在个地方呀~
项目1.6 【Pygame小游戏】斗地主我见多了,BUT 这款开源欢乐斗地主,最让人服气~
项目1.7 【Pygame小游戏】神还原【欢乐无穷的双人坦克大战】小程序游戏,上手开玩~
还有更多更多源码等你来领区啦!
汇总: Python文章合集 | (入门到实战、游戏、Turtle、案例等)