Python 自制简单版《我的世界》的详细过程

《我的世界 Minecraft》大家应该都听说过,但你有没有想过自己写一个这样的游戏呢?太难、太复杂了?也许吧,但是不试一试你怎么知道能不能成呢?

国外有位叫fogleman的开发者就用Python做了这样的一件事——自制《我的世界 Minecraft》,谁能想到,仅仅900行的代码,玩起来竟然还像模像样的:

接下来,我们就带你运行这个项目,并对这个开源的小游戏做一下简单的更改,让它变成“你的”世界。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果你用Python的目的是数据分析,可以直接安装Anaconda

Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊

在终端输入以下命令安装我们所需要的依赖模块:

pip install pyglet

看到 Successfully installed xxx 则说明安装成功

git clone https://github.com/fogleman/Minecraft.git

本地下载:

http://xiazai.jb51.net/202111/yuanma/Minecraft_jb51.rar

2.运行及操作

运行这个项目非常简单,你只需要进入源代码文件夹输入以下命令:

python main.py

即可成功运行该游戏项目,然后体验一下这个游戏:

移动

  • W: 前进
  • S: 后退
  • A: 往左
  • D: 往右
  • 鼠标移动: 视角
  • 空格: 跳跃
  • Tab: 切换到飞行模式

建筑

  • 选择建造类型:

1: 砖块

2: 草丛

3: 沙丘

  • 鼠标左键:去除建筑
  • 鼠标右键:增加建筑

退出

  • ESC: 关闭窗口

来看看我的实画:

这个“实”字着实难画,宝典两个字被我略去了,因为我选的地儿右边空位不够。

3.代码解读与自定义

接下来让我们看看这份游戏的代码,整个游戏代码只有902行,真优秀:

在上图红框的位置可以设定默认的窗口大小。不仅如此,作者还给了一些参数以供自定义速度、重力、跳跃高度等:

# 每秒帧数
TICKS_PER_SEC = 60
# 砖块大小
SECTOR_SIZE = 16
# 行走速度与飞行速度
WALKING_SPEED = 5
FLYING_SPEED = 15
# 重力与跳跃高度
GRAVITY = 20.0
MAX_JUMP_HEIGHT = 1.0

我们能不能自定义砖块类型呢?源代码文件夹下有一个texture图片:

在源代码中,涉及到用户增加区块的代码只有3行,如SAND:

SAND = tex_coords((1, 1), (1, 1), (1, 1))
# ... ...
t = random.choice([GRASS, SAND, BRICK])
# ... ...
self.inventory = [BRICK, GRASS, SAND]
# 1.brick, 2.grass, 3.sand

也就是说,我们增加自己的区块是完全可能的,那么这个tex_coords((1, 1), (1, 1), (1, 1))是什么意思呢?看看下面这2个函数:

看完tex_coords函数的参数你大概就知道了,这里第一个参数,代表砖块的顶部图像,第二个参数代表底部图像,第三个参数代表四个边的图像。而传入的参数中,(1, 0) 则表示为texture.png 的第(1,0)个图:

比如沙子,顶边、底边、四边都为一样的(1,1)这个图像,因此是:

SAND = tex_coords((1, 1), (1, 1), (1, 1))

相信明白了这个原理后,你自己加一个自定义图形的砖块也不难了吧?大家可以动手试一试。给这个项目添砖加瓦,如果好看的话,说不定还能给作者提个PR,成为4k stars项目的贡献者之一!

到此这篇关于教你用 Python 自制简单版《我的世界》的文章就介绍到这了,更多相关Python我的世界内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python著名游戏实战之方块连接 我的世界

    目录 导语 正文 (1)<我是世界>游戏规则. (2)主要程序代码. (3)效果图如下. ​总结 导语 <我的世界>是一款自由度极高的游戏,每个新存档的开启,就像是作为造物主的玩家在虚拟空间开辟了一个全新的宇宙. 方块连接世界,云游大好河山. 国庆不是回家了一趟嘛?隔壁家的小胖墩在跟家里的小孩子一起玩手机,一起下载 了这款<我的世界>的游戏,玩儿的可是非常起劲儿了,建房子打怪,别说那房子的模型着实蛮惊艳的哈! 至少我作为一个没玩过的人来说确实是很牛逼了~ 至少我做不来哈

  • Python实现我的世界小游戏源代码

    我的世界小游戏使用方法: 移动 前进:W,后退:S,向左:A,向右:D,环顾四周:鼠标,跳起:空格键,切换飞行模式:Tab; 选择建筑材料 砖:1,草:2,沙子:3,删除建筑:鼠标左键单击,创建建筑块:鼠标右键单击 ESC退出程序. 完整程序包请通过文末地址下载,程序运行截图如下: from __future__ import division import sys import math import random import time from collections import deq

  • Python 自制简单版《我的世界》的详细过程

    <我的世界 Minecraft>大家应该都听说过,但你有没有想过自己写一个这样的游戏呢?太难.太复杂了?也许吧,但是不试一试你怎么知道能不能成呢? 国外有位叫fogleman的开发者就用Python做了这样的一件事--自制<我的世界 Minecraft>,谁能想到,仅仅900行的代码,玩起来竟然还像模像样的: 接下来,我们就带你运行这个项目,并对这个开源的小游戏做一下简单的更改,让它变成"你的"世界. 1.准备 开始之前,你要确保Python和pip已经成功安装

  • IntelliJ IDEA(2018版)安装docker插件的详细过程

    目录 一.开发环境 二.安装docker插件 1.Idea内安装 2.下载安装包安装 三.Spring Boot 服务docker部署 1.新建一个Spring Boot工程 2.配置Dockerfile文件 3.创建docker镜像 一.开发环境 开发工具 版本 IntelliJ IDEA 2018.1.6 (Community Edition) Docker integration 181.5087.20 二.安装docker插件 1.Idea内安装 打开Idea,从File->Settin

  • python 制作简单的音乐播放器

    如你所见,功能很简单.只有基本的播放,停止,甚至只针对一首歌曲,仅供初学者参考学习用. 代码 from tkinter import * from tkinter import filedialog from pygame import mixer class MusicPlayer: def __init__(self, window ): window.geometry('320x100'); window.title('Iris Player'); window.resizable(0,0

  • 基于Python实现简单的人脸识别系统

    目录 前言 基本原理 代码实现 创建虚拟环境 安装必要的库 前言 最近又多了不少朋友关注,先在这里谢谢大家.关注我的朋友大多数都是大学生,而且我简单看了一下,低年级的大学生居多,大多数都是为了完成课程设计,作为一个过来人,还是希望大家平时能多抽出点时间学习一下,这种临时抱佛脚的策略要少用嗷.今天我们来python实现一个人脸识别系统,主要是借助了dlib这个库,相当于我们直接调用现成的库来进行人脸识别,就省去了之前教程中的数据收集和模型训练的步骤了. B站视频:用300行代码实现人脸识别系统_哔

  • Python 函数简单易理解版

    目录 Python 函数 一.什么是模块化程序设计? 1. 编写流程--自顶向下 2.函数在模块化设计的作用 二.实战 1.功能简介 2.通讯录功能简介 3.主程序入口 4.主程序包含以下功能 5.用什么数据结构来描述一个联系人 6.用什么数据结构来描述一个通讯录 三.函数实现 1.主函数代码实现 2.添加联系人代码实现 3.列出联系人代码实现 4.查出联系人代码实现 5.删除联系人代码实现 6.运行效果 Python 函数 一.什么是模块化程序设计? 在进行程序设计时将一个大程序按照功能划分为

  • 详解用python自制微信机器人,定时发送天气预报

    0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是wxpy库的简介: wxpy基于itchat,使用了 Web 微信的通讯协议,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计.微信公众号.微信好友.微信群基本信息获取等功能. 废话不多说,代码写起来. 1 环境 操作系统:Windows / Li

  • 利用python实现简易版的贪吃蛇游戏(面向python小白)

    引言 作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序.以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world'). 这样做效率太低,正确的做法,是到身边找问题,然后编程实现.比如说,我学了高等数学,我是不是应该考虑下如何去用编程实现求导或者积分操作,如果想不出怎么办,是不是应该 baidu 一下,别人是如何实现数值积分或是符号积分的.我们每天买东西都要用到加减甚至乘除,那么我是否能编写个简单的计算器,如果命令行太丑的话,我是否能够快速

  • python实现简单socket通信的方法

    本文实例讲述了python实现简单socket通信的方法.分享给大家供大家参考,具体如下: 刚刚开始接触python,实现了一个helloworld程序---关于udp协议的socket通信demo. 首先服务端这边的实现如下: import socket, traceback host = '' # Bind to all interfaces port = 51500 # Step1: 创建socket对象 s = socket.socket(socket.AF_INET, socket.S

  • python实现简单中文词频统计示例

    本文介绍了python实现简单中文词频统计示例,分享给大家,具体如下: 任务 简单统计一个小说中哪些个汉字出现的频率最高 知识点 1.文件操作 2.字典 3.排序 4.lambda 代码 import codecs import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 mpl.rcParams['axes.unicode_minus

  • Python实现简易版的Web服务器(推荐)

    下面给大家介绍python实现简易版的web服务器,具体内容详情大家通过本文学习吧! 1.请自行了解HTTP协议 http://www.jb51.net/article/133883.htm(点击跳转) 2.创建Socket服务,监听指定IP和端口 3.以阻塞方式等待客户端连接 4.读取客户端请求数据并进行解析 5.准备服务器运行上下文 6.处理客户端请求数据 7.根据用户请求路径读取文件 8.返回响应结果给客户端 9.程序入口 10.目录结构 11.运行 python wsgiserver.p

随机推荐