forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Minecraft на Xors3D C++ (http://forum.boolean.name/showthread.php?t=19386)

STekLyAToR 04.09.2014 04:19

Minecraft на Xors3D C++
 
Здравствуйте, делал майн на хорсе, компилится, но не запускается.
Вот сбствнн сам код:
Код:

// include Xors3d Engine header
#include <xors3d.h>
#include <iostream>

int ent; //Unmatched
int kol_blocks; // Количество блоков
int sel_block; // Пикнутый блок
int blck_tp; // Тип
int dist; // Дистанция
int pick; // Луч выделения
int ACube = xCreatePivot(); // x3

void CreateBlockOnPick(float x, float y, float z, int blck_tp);

float CurveValue(float newvalue, float oldvalue, float increments)
{
        if (increments >  1.0f) oldvalue = oldvalue - (oldvalue - newvalue) / increments;
        if (increments <= 1.0f) oldvalue = newvalue;
        return oldvalue;
}

// program entry point
int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR commandLine, int commandShow)
{
        // шрифт
        int fnt12 = xLoadFont("Arial", 12);
        xSetFont(fnt12);

        // setup maximum supported AntiAlias Type
        xSetAntiAliasType(xGetMaxAntiAlias());

        // set application window caption
        xAppTitle("Minecraft | by Vovan Kot");

        // initialize graphics mode
        xGraphics3D(800, 600, 32, false, true);
        xSetBuffer(xBackBuffer());

        // hide mouse pointer
        xHidePointer();

        // enable antialiasing
        xAntiAlias(true);

        // create camera
        int camera_piv = xCreatePivot();
        int camera = xCreateCamera();
        xPositionEntity(camera, 0, 5, -15);
        xCameraClsColor(camera, 0, 165, 250);
        xCameraRange(camera, 0.5, 50);

        // light
        int light = xCreateLight();
        xRotateEntity(light, 30, 0, 0);

        // position camera
        xPositionEntity(camera, 0, 2, -10);

        // for mouse look
        xMoveMouse(xGraphicsWidth() / 2, xGraphicsHeight() / 2);
        float mousespeed = 0.5;
        float camerasmoothness = 4.5;
        float mxs = 0.0f;
        float mys = 0.0f;
        float camxa = 0.0f;
        float camya = 0.0f;

        //a-cubes
        //Верх
        int ACube_top = xCreateCube(ACube);
        xPositionEntity(ACube_top, 0, 0.5, 0);
        xScaleEntity(ACube_top, 0.48, 0.05, 0.48);
        xEntityPickMode(ACube_top, 2);
        xNameEntity(ACube_top, "top");

        //Низ
        int ACube_bottom = xCreateCube(ACube);
        xPositionEntity(ACube_bottom, 0, -0.5, 0);
        xScaleEntity(ACube_bottom, 0.48, 0.05, 0.48);
        xEntityPickMode(ACube_bottom, 2);
        xNameEntity(ACube_bottom, "bottom");

        //Перед
        int ACube_front = xCreateCube(ACube);
        xPositionEntity(ACube_front, 0, 0, 0.5);
        xScaleEntity(ACube_front, 0.48, 0.48, 0.05);
        xEntityPickMode(ACube_front, 2);
        xNameEntity(ACube_front, "front");

        //Зад
        int ACube_back = xCreateCube(ACube);
        xPositionEntity(ACube_back, 0, 0, -0.5);
        xScaleEntity(ACube_back, 0.48, 0.48, 0.05);
        xEntityPickMode(ACube_back, 2);
        xNameEntity(ACube_back, "back");

        //Левый бок
        int ACube_left = xCreateCube(ACube);
        xPositionEntity(ACube_left, -0.5, 0, 0);
        xScaleEntity(ACube_left, 0.05, 0.48, 0.48);
        xEntityPickMode(ACube_left, 2);
        xNameEntity(ACube_left, "left");

        //Правый бок
        int ACube_right = xCreateCube(ACube);
        xPositionEntity(ACube_right, 0.5, 0, 0);
        xScaleEntity(ACube_right, 0.05, 0.48, 0.48);
        xEntityPickMode(ACube_right, 2);
        xNameEntity(ACube_right, "right");

        xHideEntity(ACube);

        //"Выделятор"
        int pick_ent_0; //Предыдущий объект

        // main program loop
        while (!xKeyDown(KEY_ESCAPE))
        {
                // camera control
                if (xKeyDown(KEY_W)) xMoveEntity(camera, 0, 0, 1);
                if (xKeyDown(KEY_S)) xMoveEntity(camera, 0, 0, -1);
                if (xKeyDown(KEY_A)) xMoveEntity(camera, -1, 0, 0);
                if (xKeyDown(KEY_D)) xMoveEntity(camera, 1, 0, 0);

                mxs = CurveValue(xMouseXSpeed() * mousespeed, mxs, camerasmoothness);
                mys = CurveValue(xMouseYSpeed() * mousespeed, mys, camerasmoothness);
                camxa = fmodf(camxa - mxs, 360.0f);
                camya = camya + mys;
                if (camya < -89.0f) camya = -89.0f;
                if (camya >  89.0f) camya = 89.0f;
                xRotateEntity(camera, camya, camxa, 0.0);
                xMoveMouse(xGraphicsWidth() / 2, xGraphicsHeight() / 2);

                if (pick_ent_0 != 0)
                {
                        xEntityColor(pick_ent_0, 255, 255, 255);
                }

                pick = xCameraPick(camera, xMouseX(), xMouseY());

                if (pick != 0) dist = xEntityDistance(camera, pick);

                if (pick != 0 && pick != ACube_top && pick != ACube_bottom && pick != ACube_front && pick != ACube_back && pick != ACube_left && pick != ACube_right)
                {
                        sel_block = pick;
                        pick_ent_0 = sel_block;
                        xPositionEntity(ACube, xEntityX(pick, true), xEntityY(pick, true), xEntityZ(pick, true));
                        xShowEntity(ACube);
                }

                if (dist <= 5 && sel_block != 0) xEntityColor(sel_block, 255, 255, 0);
                if (dist <= 5)
                {
                        if (xMouseHit(1) && sel_block != 0 && pick != 0) { /*DeleteBlock(sel_block);*/ xHideEntity(ACube); }
                        if (xMouseHit(2) && pick != 0) CreateBlockOnPick(xPickedX(), xPickedY(), xPickedZ(), 0);
                }

                // update animations
                xUpdateWorld();
                xRenderWorld();

                // draw texts
                char buffer[128];
                sprintf(buffer, "FPS: %i", xGetFPS());
                xText(10, 10, buffer);
                xText(xGraphicsWidth() / 2, xGraphicsHeight() / 2, "+");

                // switch back buffer
                xFlip();
        }
        return 0;
}

void CreateBlock(float x, float y, float z, int blck_tp)
{
        switch(blck_tp)
        {
        case 0:
            {
                                int ent = xCreateCube();
                                xEntityTexture(ent, xLoadTexture("media/textures/bricks.jpg"));
                                kol_blocks += 1;
                                xPositionEntity(ent, x, y, z);
                                xScaleEntity(ent, 0.5, 0.5, 0.5);
                                xEntityPickMode(ent, 2);
            }
        }
}

void CreateBlockOnPick(float x, float y, float z, int blck_tp)
{
        int piv = xCreatePivot();
        if (xEntityName(pick) == "top") xPositionEntity(piv, xEntityX(ACube), xEntityY(ACube) + 1, xEntityZ(ACube));
        else if (xEntityName(pick) == "bottom") xPositionEntity(piv, xEntityX(ACube), xEntityY(ACube) - 1, xEntityZ(ACube));
        else if (xEntityName(pick) == "front") xPositionEntity(piv, xEntityX(ACube), xEntityY(ACube), xEntityZ(ACube) + 1);
        else if (xEntityName(pick) == "back") xPositionEntity(piv, xEntityX(ACube), xEntityY(ACube), xEntityZ(ACube) - 1);
        else if (xEntityName(pick) == "left") xPositionEntity(piv, xEntityX(ACube) - 1, xEntityY(ACube), xEntityZ(ACube));
        else if (xEntityName(pick) == "right") xPositionEntity(piv, xEntityX(ACube) + 1, xEntityY(ACube), xEntityZ(ACube));

        /*
        switch (xEntityName(pick))
        {
                case 'top': xPositionEntity(piv, xEntityX(ACube), xEntityY(ACube) + 1, xEntityZ(ACube));
                case 'bot': xPositionEntity(piv, xEntityX(ACube), xEntityY(ACube) - 1, xEntityZ(ACube));
                case 'fron': xPositionEntity(piv, xEntityX(ACube), xEntityY(ACube), xEntityZ(ACube) + 1);
                case 'back': xPositionEntity(piv, xEntityX(ACube), xEntityY(ACube), xEntityZ(ACube) - 1);
                case 'left': xPositionEntity(piv, xEntityX(ACube) - 1, xEntityY(ACube), xEntityZ(ACube));
                case 'righ': xPositionEntity(piv, xEntityX(ACube) + 1, xEntityY(ACube), xEntityZ(ACube));
        }
        */
        CreateBlock(xEntityX(piv), xEntityY(piv), xEntityZ(piv), blck_tp);
        xFreeEntity(piv);
}


Mr_F_ 04.09.2014 11:18

Ответ: Minecraft на Xors3D C++
 
Цитата:

но не запускается.
а что делает?

impersonalis 04.09.2014 11:47

Ответ: Minecraft на Xors3D C++
 
у меня тут ругается:
Код:

cout >> "Penguins rocks!" >> endl;
error: no match for 'operator>>' in 'std::cout >> "Penguins rocks!"'
note: candidates are:
(далее список функций-кандидатов)
птрсн.жпг

KCEPOKC 05.09.2014 22:13

Ответ: Minecraft на Xors3D C++
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 100 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Кирпи4 06.09.2014 14:02

Ответ: Minecraft на Xors3D C++
 
Можешь взять вот это все, распечатать, смять и выбросить - ну нету в майне цельных кубов, там все строится оче хитро и все невидимые грани отсекаются.

Когда то я тоже начинал делать свой майнкрафт, но потом произошло вот что

Бойся.

STekLyAToR 07.09.2014 08:31

Ответ: Minecraft на Xors3D C++
 
Данный код для Blitz3d, и всё работает!

Код:

;Подключаем Xors3D
Include "Xors3D.bb"

;Подключаем наш инклуд с функциями
Include "includes/ENGINE.bb"

Type Blocks
  Field ent ;Объект
  Field typ$ ;Тип блока
End Type

Global kol_blocks ;Количество блоков
Global sel_block ;Выделенный блок

;xGraphics3D ширина, высота, глубина цвета, False-Оконный режим True-Полный экран, False-Максимум FPS если True-60 FPS(Кадров)
xGraphics3D 1024,768,32,False,True
xSetBuffer xBackBuffer()

xAppTitle "Мой Minecraft - DirectX 9" ;Загололовок

xAntiAlias True ;Включить Сглаживание

;Загружаем шрифт Arial с размером 12
Global fnt12=xLoadFont("Arial",12)
xSetFont fnt12

Global camera_piv=xCreatePivot()
Global camera=xCreateCamera()
xPositionEntity camera,0,5,-15
xCameraClsColor camera,0,165,250
;xCameraRange camera,.05,50
Global light=xCreateLight()
xRotateEntity light,30,0,0

;===========

Global ACube=xCreatePivot()
;Верх
Global ACube_top=xCreateCube(ACube)
xPositionEntity ACube_top,0,.5,0
xScaleEntity ACube_top,.48,.05,.48
xEntityPickMode ACube_top,2
xNameEntity ACube_top,"top"
;xEntityAlpha ACube_top,0
;Низ
Global ACube_bottom=xCreateCube(ACube)
xPositionEntity ACube_bottom,0,-.5,0
xScaleEntity ACube_bottom,.48,.05,.48
xEntityPickMode ACube_bottom,2
xNameEntity ACube_bottom,"bottom"
;xEntityAlpha ACube_bottom,0
;Перед
Global ACube_front=xCreateCube(ACube)
xPositionEntity ACube_front,0,0,.5
xScaleEntity ACube_front,.48,.48,.05
xEntityPickMode ACube_front,2
xNameEntity ACube_front,"front"
;xEntityAlpha ACube_front,0
;Зад
Global ACube_back=xCreateCube(ACube)
xPositionEntity ACube_back,0,0,-.5
xScaleEntity ACube_back,.48,.48,.05
xEntityPickMode ACube_back,2
xNameEntity ACube_back,"back"
;xEntityAlpha ACube_back,0
;Левый бок
Global ACube_left=xCreateCube(ACube)
xPositionEntity ACube_left,-.5,0,0
xScaleEntity ACube_left,.05,.48,.48
xEntityPickMode ACube_left,2
xNameEntity ACube_left,"left"
;xEntityAlpha ACube_left,0
;Правый бок
Global ACube_right=xCreateCube(ACube)
xPositionEntity ACube_right,.5,0,0
xScaleEntity ACube_right,.05,.48,.48
xEntityPickMode ACube_right,2
xNameEntity ACube_right,"right"
;xEntityAlpha ACube_right,0

;Скрываем вспомогательный объект ACube
xHideEntity ACube

;===========

Global tex_ground=xLoadTexture("Textures\ground_down.jpg")

Global pick ;Луч исходящий из камеры(короче щупальце)

Global pick_ent_0 ;Предыдущий объект

;For x=-10 To 10
;For z=-10 To 10
CreateBlock(x,0,z,"ground")
;Next
;Next

; ++++++++++++++++++++++
; Начало игрового цикла
; ++++++++++++++++++++++

While Not xKeyDown(1)
 
  ;Движение игрока вперёд, назад, влево, вправо
  If xKeyDown(200) Or xKeyDown(17) Then xMoveEntity camera_piv,0,0,.1
  If xKeyDown(208) Or xKeyDown(31) Then xMoveEntity camera_piv,0,0,-.1
  If xKeyDown(203) Or xKeyDown(30) Then xMoveEntity camera_piv,-.1,0,0
  If xKeyDown(205) Or xKeyDown(32) Then xMoveEntity camera_piv,.1,0,0
 
  ;Движение игрока вверх, вниз
  If xKeyDown(57) Then xMoveEntity camera_piv,0,.1,0
  If xKeyDown(29) Then xMoveEntity camera_piv,0,-.1,0
 
  If xKeyHit(64) Then LoadGame() ;Загружаем сохранение при нажатии клавиши F6
  If xKeyHit(63) Then SaveGame() ;Созраняем игру при нажатии клавиши F5
 
  xPositionEntity camera,xEntityX(camera_piv),xEntityY(camera_piv)+2.5,xEntityZ(camera_piv)
 
  ;Мышка
  ;HidePointer
  MXS#=xMouseXSpeed()*0.1:MYS#=xMouseYSpeed()*0.1
 
  xTurnEntity camera,MYS#,0,0
  xTurnEntity camera_piv,0,-MXS#,0
 
  If xEntityPitch(camera)>90 xRotateEntity camera,90,xEntityYaw(camera_piv),0
  If xEntityPitch(camera)<-90 xRotateEntity camera,-90,xEntityYaw(camera_piv),0
 
  xRotateEntity camera,xEntityPitch(camera),xEntityYaw(camera_piv),0
  xMoveMouse xGraphicsWidth()/2,xGraphicsHeight()/2
 
  If pick_ent_0<>0 Then xEntityColor pick_ent_0,255,255,255 ;Окрашиваем предыдущий объект в белый цвет
 
  pick=xCameraPick(camera,xMouseX(),xMouseY())
  If pick<>0 Then dist=xEntityDistance(camera,pick)
 
  If pick<>0 And pick<>ACube_top And pick<>ACube_bottom And pick<>ACube_front And pick<>ACube_back And pick<>ACube_left And pick<>ACube_right Then
      sel_block=pick
      pick_ent_0=sel_block
  End If
 
  If pick<>0 And pick<>ACube_top And pick<>ACube_bottom And pick<>ACube_front And pick<>ACube_back And pick<>ACube_left And pick<>ACube_right Then xPositionEntity ACube,Int(xEntityX(pick)),Int(xEntityY(pick)),Int(xEntityZ(pick)):xShowEntity ACube
 
  ;Окрашиваем только тот объект который ближе или равен 5 шагам к камере
  If dist<=5 And sel_block<>0 Then
      xEntityColor sel_block,255,255,0 ;Окрашиваем текущий объект в жёлтый цвет
  End If
 
  ;========================
 
  If dist<=5 Then
      If xMouseHit(1) And sel_block<>0 And pick<>0 Then DeleteBlock(sel_block):sel_block=0:xHideEntity ACube
      If xMouseHit(2) And pick<>0 Then CreateBlockOnPick(xPickedX#(),xPickedY#(),xPickedZ#(),"ground")
  End If
 
  ;========================
 
  xUpdateWorld
  xRenderWorld
 
  xText 5,5,"FPS: "+xGetFPS()
  xText 5,20,"Polygons: "+xTrisRendered()/2
 
  xText xGraphicsWidth()/2,50,"KOL-VO BLOCKS="+kol_blocks
 
  ;xText xMouseX(),xMouseY()-55,"ID: "+pick,True,True
  ; If pick<>0 Then
      ;xText xMouseX(),xMouseY()-35,"TYPE: "+xEntityName$(sel_block),True,True
      ;xText xMouseX(),xMouseY()-15,"DISTANCE: "+dist,True,True
 ;  End If
 
  xFlip
Wend
; ++++++++++++++++++++++

End

;Функция создания нового блока
Function CreateBlock(x#,y#,z#,typ$)
  b.Blocks = New Blocks
 
  Select typ$
  Case "ground" 
      b\ent=xCreateCube()
      xEntityTexture b\ent,tex_ground
  End Select
 
  kol_blocks=kol_blocks+1
  b\typ$=typ$
 
  xPositionEntity b\ent,x#,y#,z#
  xScaleEntity b\ent,.5,.5,.5
  xEntityPickMode b\ent,2 ;Делаем объект видимым лучу выходящим из камеры
  xNameEntity b\ent,typ$ ;Присваеваем тип объекта в его имя
End Function

;Функция удаления блока
Function DeleteBlock(ent)
For b.Blocks = Each Blocks
  If b\ent=ent Then
      xFreeEntity b\ent
      Delete b
      kol_blocks=kol_blocks-1
     
      Goto end_delete_block
  End If
Next
.end_delete_block
End Function

;Функция удаления всех блоков
Function DeleteAllBlocks()
kol_blocks=0
For b.Blocks = Each Blocks
  xFreeEntity b\ent
  Delete b
Next

sel_block=0
pick=0
pick_ent_0=0
End Function

Function CreateBlockOnPick(x#,y#,z#,typ$)
  piv=xCreatePivot()
 
  Select xEntityName(pick)
      Case "top": xPositionEntity piv,Int(xEntityX(ACube)),Int(xEntityY(ACube))+1,Int(xEntityZ(ACube))
      Case "bottom": xPositionEntity piv,Int(xEntityX(ACube)),Int(xEntityY(ACube))-1,Int(xEntityZ(ACube))
      Case "front": xPositionEntity piv,Int(xEntityX(ACube)),Int(xEntityY(ACube)),Int(xEntityZ(ACube))+1
      Case "back": xPositionEntity piv,Int(xEntityX(ACube)),Int(xEntityY(ACube)),Int(xEntityZ(ACube))-1
      Case "left": xPositionEntity piv,Int(xEntityX(ACube))-1,Int(xEntityY(ACube)),Int(xEntityZ(ACube))
      Case "right": xPositionEntity piv,Int(xEntityX(ACube))+1,Int(xEntityY(ACube)),Int(xEntityZ(ACube))
  End Select
 
  CreateBlock(xEntityX(piv),xEntityY(piv),xEntityZ(piv),typ$)
  xFreeEntity piv
End Function

А мне нужно, этот код перевести на C++.
Думаю, ты понял.

Nerd 07.09.2014 15:23

Ответ: Minecraft на Xors3D C++
 
Тебе не нужно переводить это на C++, тебе нужно научиться кодить.

Владислав 13.09.2014 11:02

Ответ: Minecraft на Xors3D C++
 
Вложений: 1
Код:

CreateCube()
это в отношении "minecraft-like-game" вообще надо забыть

Код:

  Case "ground" 
      b\ent=xCreateCube()
      xEntityTexture b\ent,tex_ground
  End Select

И что, так прописывать характеристики каждого блока в коде? тебе нужно сделать базу данных, где будет указан тип блока (прозрачный/непрозрачный) его имя, текстура, звук шагов, звук удара, его дроп, количество дропа, его огнеупорность и крепость, и еще кучу параметров, но для начала хотя бы просто имя и текстуру, и хранить это все в базе, а в коде уже только обращаться к ней.

Код:

Goto end_delete_block
Уже лучше exit или return 0

Код:

xNameEntity b\ent,typ$ ;Присваеваем тип объекта в его имя
лучше хранить тип объекта в численном представлении, чем строковом, и не через имя ентити. Разумней использовать массив, уже имея этот массив тебе нужно будет строить сетку по нему, т.е. только видимые грани, между двумя соседними блоками никаких полигонов. Этот массив уже проще сохранять в файл и заполнять его от туда же.

Код:

  Select xEntityName(pick)
      Case "top": xPositionEntity piv,Int(xEntityX(ACube)),Int(xEntityY(ACube))+1,Int(xEntityZ(ACube))
      Case "bottom": xPositionEntity piv,Int(xEntityX(ACube)),Int(xEntityY(ACube))-1,Int(xEntityZ(ACube))
      Case "front": xPositionEntity piv,Int(xEntityX(ACube)),Int(xEntityY(ACube)),Int(xEntityZ(ACube))+1
      Case "back": xPositionEntity piv,Int(xEntityX(ACube)),Int(xEntityY(ACube)),Int(xEntityZ(ACube))-1
      Case "left": xPositionEntity piv,Int(xEntityX(ACube))-1,Int(xEntityY(ACube)),Int(xEntityZ(ACube))
      Case "right": xPositionEntity piv,Int(xEntityX(ACube))+1,Int(xEntityY(ACube)),Int(xEntityZ(ACube))
  End Select

Так тоже лучше не делать, все что нужно - это определить координаты "пика" (целочисленные) и воткнуть туда блок, а далее уе перестроить всю сетку. Перестраивать сетку всего мира "дорого" поэтому имеет смысл разделить его на чанки, что и сделано в minecraft. Каждый чанк это 16х16х256, если не ошибаюсь, и все что нужно при добавлении блока - перестроить 1 чанк, это несколько "дешевле". Так же удобно сохранять мир - 1 чанк - 1 файл, их же удобно и подгружать при надобности (игрок например подошел) и сохранять в файл (выгружать чанк, когда игрок ушел далеко от него).

Вообще в данном случае код на ++ ни чем не лучше кода на blitz. доступ к кабине пилота не делает тебя пилотом, как-то так.

Вот мой пример, тоже было интересна данная тема (это blitz3d)
если не грузиться то тыкнуть тут


А на скрине это уже хорс, более 4млн блоков, 232 чанка и все стабильно

STekLyAToR 20.09.2014 16:43

Ответ: Minecraft на Xors3D C++
 
Мне не нужно "прям штоб как майн был и придметы быле" а просто, чтобы можно было ставить блоки друг к другу!

Nex 21.09.2014 02:03

Ответ: Minecraft на Xors3D C++
 
Цитата:

Сообщение от STekLyAToR (Сообщение 286988)
Мне не нужно "прям штоб как майн был и придметы быле" а просто, чтобы можно было ставить блоки друг к другу!

Дело в том, что через какое то время делая блоки через CreateCube() у тебя начнет лагать игра, а потом и вовсе зависнет. А все потому что в игре будет много объектов. А делать как "прям штоб как майн был" это значит объединять все эти тысячи объектов в один удаляя те стороны кубиков, которые мы не видим.

STekLyAToR 21.09.2014 06:56

Ответ: Minecraft на Xors3D C++
 
Это неважно, мне не нужно много блоков.

STekLyAToR 18.12.2019 19:13

Ответ: Minecraft на Xors3D C++
 
Цитата:

Сообщение от Nerd (Сообщение 286208)
Тебе не нужно переводить это на C++, тебе нужно научиться кодить.

Да, чувак, ты был абсолютно прав.
Лол, было время, было.

ant0N 19.12.2019 13:43

Ответ: Minecraft на Xors3D C++
 
Цитата:

Сообщение от STekLyAToR (Сообщение 316852)
Да, чувак, ты был абсолютно прав.
Лол, было время, было.

после этого должна быть ссылка на твой клон майнкрафта

STekLyAToR 19.11.2020 23:11

Ответ: Minecraft на Xors3D C++
 
Цитата:

Сообщение от ant0N (Сообщение 316854)
после этого должна быть ссылка на твой клон майнкрафта

Да чёт пока мне такая идея вообще не кажется интересной. Я недавно искал как на плюсах создавать быстро, просто и красиво приложухи с UI, хотя бы на винде, в идеале на кроссплатформе, и пришёл к выводу что Qt слишком тяжелый для каких-то маленьких проектов, а вот связка ImGui и SFML будет в самый раз, осталось только её проверить на практике.

KCEPOKC 20.09.2021 00:39

Ответ: Minecraft на Xors3D C++
 
Цитата:

Сообщение от STekLyAToR (Сообщение 317928)
Да чёт пока мне такая идея вообще не кажется интересной. Я недавно искал как на плюсах создавать быстро, просто и красиво приложухи с UI, хотя бы на винде, в идеале на кроссплатформе, и пришёл к выводу что Qt слишком тяжелый для каких-то маленьких проектов, а вот связка ImGui и SFML будет в самый раз, осталось только её проверить на практике.

Вообще не понял в чем прикол Qt'а. Заставили как-то в шараге на нем на питоне (лол) покодить. Вообще какая-то сектантская штука -- всё, как не у людей. Вроде сверху есть место для вкладок, но всё равно открыть можно только одно. Вроде есть хайлайтинг какой-то, но в питоне конкретно вообще через задницу работает. Сам интерфейс вообще не как у людей. После джет бреинса и визуалки совершенно противно им было пользоваться.
Ну это целиком моё имхо. Чендж май майнд.
Интересно, есть ли те, кто сегодня пользуется кьютом из собственных порывов, а не из-за работы :dontknow:


Часовой пояс GMT +4, время: 03:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot