minecrft用python编怎么做,怎么做联机:附源码

1.概述

本人用了两种库,分别为pylet和ursina做了两种版本;可是应为不知道的原因,本人的计算机的numba库用不了了,所以今天只讲ursina

思路:

思路
1 2 3 4

前期准备:

进阶 高级 终极
创建平坦地形 制作生物 制作ui 制作局域网联机
设置玩家基础属性 优化玩家高级属性 制作游戏模式 跟上mojang的脚步(更新)
建模(不做生物就不用) 制作随机单层地形 制作启动器
制作生物群系 制作更多生物
制作玩家动作 制作设置
制作声音 制作掉落物
制作物品

 以上为本人的制作思路,本人正在完成联机模块;我分享一下我的思路:本人想制作一个客户端和一个服务端,让客户端不停向服务端发送现在的地图,并同步到别的客户端从而实现联机。

2.方法总结

 1.关于客户端:

在制作的过程中,我们应该使用的是pycharm这样的可以制作大型项目的软件,既不推荐IDLE。

IDLE做的项目即慢又效果不好,而且无法像pycharm那样方便,如果不会用pycharm,可以去网上搜。

2.关于文件的方式

文件尽量一个为一个模块,不要把很多类和函数放一个文件里。只留一个main.py来运行程序。

3.关于材质与模型:

我将提供材质与模型

4.我想站在巨人的肩膀上做程序怎么办?

我来提供!只要你有求那我会帮你!

5.关于问题与改正

请发邮件联系我谢谢你!本人只有12岁!求求了!感谢大佬支招!

邮箱s11451419198210@163.com

我的main.py

import sys
from easygui import *
import sys
from PyQt5 import QtWidgets,uic

zhujiemian=uic.loadUiType('zhujiemian.ui')[0]
class Zjm(QtWidgets.QMainWindow,zhujiemian):
    def __init__(self,parent=None):
        QtWidgets.QMainWindow.__init__(self,parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.danrenyouxi)
        self.pushButton_2.clicked.connect(self.duorenyouxi)
        self.pushButton_3.clicked.connect(self.pifuzhanghao)
        self.pushButton_4.clicked.connect(self.zuozhe)
    def danrenyouxi(self):
        msgbox('关掉主窗口即可运行游戏')

    def duorenyouxi(self):
        msgbox('多人游戏暂未开通','wanning')
    def pifuzhanghao(self):
        q=buttonbox('哪个是你的?',choices=list(map(str,open('zhanghao.txt','r').read().split(' ')))+['New'])
        if q=='New':
            e=(open('zhanghao.txt', 'a'))
            e.write(' '+enterbox())
            e.close()
    def zuozhe(self):
        msgbox('作者是邓梓嘉12岁,作于2024.8.4日')
app = QtWidgets.QApplication(sys.argv)
mywindow=Zjm()
mywindow.show()
app.exec_()
def gamesetting():
    global generatingTerrain
    if held_keys['escape']:
        mouse.locked = False
        q = buttonbox('设置界面', choices=['play', 'Quit', 'settings'])
        if q == 'play':
            mouse.locked = True
        elif q == 'Quit':
            quit()
            mouse.locked = True
        else:
            q = buttonbox('这个是十分危险的!你确定吗,小心bugs',
                          choices=['我就犯贱', '我走了'])
            if q != '我走了':
                try:
                    subject = FirstPersonController()
                    q = choicebox('修改项选择',
                                  choices=['close', 'window.color(rgb', 'subject.gravity', 'subject.height = 1.0',
                                           'subject.runSpeed = 8', 'subject.walkSpeed = 12', 'camera.dash = 10',
                                           'camera.fov = origFOV = 63', 'subject.cursor.color = color.white',
                                           'subject.blockType = None', 'subject.frog = False',
                                           'subject.cursor.visible = True',
                                           'window.fullscreen=False'])
                    if q == 'window.color(rgb':
                        w = list(map(int, enterbox('rgb用空格隔开').split(' ')))
                        window.color = color.rgb(w[0], w[1], w[2])
                    elif q == 'subject.gravity':
                        w = list(map(int, enterbox('subject.gravity').split(' ')))
                        subject.gravity = w[0]
                    elif q == 'subject.gravity':
                        w = list(map(int, enterbox('subject.gravity').split(' ')))
                        subject.gravity = w[0]
                    elif q == 'subject.height = 1.0':
                        w = list(map(int, enterbox('subject.height = 1.0').split(' ')))
                        subject.gravity = w[0]
                        subject.camera_pivot.y = subject.height
                    elif q == 'subject.runSpeed = 8':
                        w = list(map(int, enterbox('subject.runSpeed = 8').split(' ')))
                        subject.runSpeed = w[0]
                    elif q == 'subject.walkSpeed = 12':
                        w = list(map(int, enterbox('subject.walkSpeed = 12').split(' ')))
                        subject.walkSpeed = w[0]
                    elif q == 'camera.dash = 10':
                        w = list(map(int, enterbox('camera.dash = 10').split(' ')))
                        camera.dash = w[0]
                    elif q == 'subject.frog = False':
                        w = list(map(int, enterbox('subject.frog = False').split(' ')))
                        subject.frog = w[0]
                    elif q == 'subject.cursor.visible = True':
                        w = list(map(int, enterbox('subject.cursor.visible = True').split(' ')))
                        subject.cursor.visible = w[0]
                    elif q == 'subject.cursor.color = color.white':
                        w = list(map(int, enterbox('subject.cursor.color = color.white').split(' ')))
                        subject.cursor.color = w[0]
                    elif q == 'subject.blockType = None':
                        w = list(map(int, enterbox('subject.blockType = None').split(' ')))
                        subject.blockType = w[0]
                    elif q == 'camera.fov = origFOV = 63':
                        w = list(map(int, enterbox('camera.fov = origFOV = 63').split(' ')))
                        camera.fov = origFOV = w[0]
                    elif q == 'window.fullscreen=False':
                        w = list(map(int, enterbox('window.fullscreen=False').split(' ')))
                        window.fullscreen = w[0]
                    else:
                        pass
                except:
                    window.color = color.rgb(0, 200, 225)
                    # indra = Sky()
                    # indra.color = window.color
                    subject = FirstPersonController()
                    subject.gravity = 0.0
                    subject.cursor.visible = True
                    subject.cursor.color = color.white
                    subject.height = 1.62  # Minecraft eye-level?
                    subject.camera_pivot.y = subject.height
                    subject.frog = False  # For jumping...
          
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值