@Artem2846
#python

Как сделать игру на python со своей сценой?

Я хочу создать 3д игру на python, как это сделать со своим obj файлом?
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MasterGod
Обратился к знакомому, он проворчал, но послал код. Хотя код писать я его не просил. Только переозвувил твой вопрос, как бы от себя и всё. По коду не спрашивай я ни чем не помогу, а спасибо скажешь Валере зверкову, ну и мне кстате можешь тоже, ведь я спрашивал)) меня Андрей зовут..

После того как он прислал код. Я попросил его записать мне некоторые названия, так как на слух я не уверен был что вообще правильно напишу и вообще в них не шарю. И вот что получается используется библиотеки :
Pygame и PyOpenGL для создания окна и отображения 3D сцены с использованием obj файла
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *

def init():
    pygame.init()
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF | OPENGL)

    gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)
    glTranslatef(0.0, 0.0, -5)

def load_obj(filename):
    vertices = []
    faces = []
    with open(filename, 'r') as file:
        for line in file:
            if line.startswith('v '):
                vertex = line.split()[1:]
                vertices.append(list(map(float, vertex)))
            elif line.startswith('f '):
                face = line.split()[1:]
                faces.append(list(map(int, face))))
    
    return vertices, faces

def draw_obj(vertices, faces):
    glBegin(GL_TRIANGLES)
    for face in faces:
        for vertex in face:
            glVertex3fv(vertices[vertex - 1])
    glEnd()

def main():
    init()

    vertices, faces = load_obj('your_obj_file.obj')

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        glRotatef(1, 3, 1, 1)
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        draw_obj(vertices, faces)
        pygame.display.flip()
        pygame.time.wait(10)

main()

Сказал что тут надо заменить `'your_obj_file.obj'` на путь к obj файлу. Этот код создаст "окно," загрузит obj файл, и будет вращать сцену с помощью glRotatef, что это такое я не спрашивал, даже не думал что он код вообще будет писать, тебе сделали, дальше сам думай.

Но вообще питон тяжеловесный, хотя он год или два назад говорил, прямо до усравки что вроде как питон стал более оптимизированный. Прямо чуть ли не такой же как си. Но.. Долго, долго мучался, с созданием игры и плюнул. Потому что убедился что питон всеравно тяжеловесный.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы