|
Xors3D Графический движок с поддержкой DirectX9 |
04.09.2014, 04:19
|
#1
|
Оператор ЭВМ
Регистрация: 03.09.2014
Сообщений: 20
Написано 2 полезных сообщений (для 2 пользователей)
|
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);
}
|
(Offline)
|
|
04.09.2014, 11:18
|
#2
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Minecraft на Xors3D C++
|
(Offline)
|
|
04.09.2014, 11:47
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Minecraft на Xors3D C++
у меня тут ругается:
cout >> "Penguins rocks!" >> endl;
error: no match for 'operator>>' in 'std::cout >> "Penguins rocks!"'
note: candidates are:
(далее список функций-кандидатов)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
05.09.2014, 22:13
|
#4
|
Принтер
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 570
Написано 342 полезных сообщений (для 1,242 пользователей)
|
Ответ: Minecraft на Xors3D C++
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 100 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
|
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо KCEPOKC за это полезное сообщение:
|
|
06.09.2014, 14:02
|
#5
|
Социал-сычевист
Регистрация: 24.06.2011
Сообщений: 611
Написано 342 полезных сообщений (для 1,359 пользователей)
|
Ответ: Minecraft на Xors3D C++
Можешь взять вот это все, распечатать, смять и выбросить - ну нету в майне цельных кубов, там все строится оче хитро и все невидимые грани отсекаются.
Когда то я тоже начинал делать свой майнкрафт, но потом произошло вот что
Бойся.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.09.2014, 08:31
|
#6
|
Оператор ЭВМ
Регистрация: 03.09.2014
Сообщений: 20
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: 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++.
Думаю, ты понял.
|
(Offline)
|
|
07.09.2014, 15:23
|
#7
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Minecraft на Xors3D C++
Тебе не нужно переводить это на C++, тебе нужно научиться кодить.
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Nerd за это полезное сообщение:
|
|
13.09.2014, 11:02
|
#8
|
ПроЭктировщик
Регистрация: 08.05.2011
Сообщений: 143
Написано 46 полезных сообщений (для 219 пользователей)
|
Ответ: Minecraft на Xors3D C++
это в отношении "minecraft-like-game" вообще надо забыть
Case "ground"
b\ent=xCreateCube()
xEntityTexture b\ent,tex_ground
End Select
И что, так прописывать характеристики каждого блока в коде? тебе нужно сделать базу данных, где будет указан тип блока (прозрачный/непрозрачный) его имя, текстура, звук шагов, звук удара, его дроп, количество дропа, его огнеупорность и крепость, и еще кучу параметров, но для начала хотя бы просто имя и текстуру, и хранить это все в базе, а в коде уже только обращаться к ней.
Уже лучше 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 чанка и все стабильно
__________________
Последний раз редактировалось impersonalis, 13.09.2014 в 18:54.
Причина: тег
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Владислав за это полезное сообщение:
|
|
20.09.2014, 16:43
|
#9
|
Оператор ЭВМ
Регистрация: 03.09.2014
Сообщений: 20
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Minecraft на Xors3D C++
Мне не нужно "прям штоб как майн был и придметы быле" а просто, чтобы можно было ставить блоки друг к другу!
|
(Offline)
|
|
21.09.2014, 02:03
|
#10
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Minecraft на Xors3D C++
Сообщение от STekLyAToR
Мне не нужно "прям штоб как майн был и придметы быле" а просто, чтобы можно было ставить блоки друг к другу!
|
Дело в том, что через какое то время делая блоки через CreateCube() у тебя начнет лагать игра, а потом и вовсе зависнет. А все потому что в игре будет много объектов. А делать как "прям штоб как майн был" это значит объединять все эти тысячи объектов в один удаляя те стороны кубиков, которые мы не видим.
|
(Offline)
|
|
21.09.2014, 06:56
|
#11
|
Оператор ЭВМ
Регистрация: 03.09.2014
Сообщений: 20
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Minecraft на Xors3D C++
Это неважно, мне не нужно много блоков.
|
(Offline)
|
|
18.12.2019, 19:13
|
#12
|
Оператор ЭВМ
Регистрация: 03.09.2014
Сообщений: 20
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Minecraft на Xors3D C++
Сообщение от Nerd
Тебе не нужно переводить это на C++, тебе нужно научиться кодить.
|
Да, чувак, ты был абсолютно прав.
Лол, было время, было.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.12.2019, 13:43
|
#13
|
Бывалый
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений (для 853 пользователей)
|
Ответ: Minecraft на Xors3D C++
Сообщение от STekLyAToR
Да, чувак, ты был абсолютно прав.
Лол, было время, было.
|
после этого должна быть ссылка на твой клон майнкрафта
__________________
Абсолютли!
|
(Offline)
|
|
19.11.2020, 23:11
|
#14
|
Оператор ЭВМ
Регистрация: 03.09.2014
Сообщений: 20
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Minecraft на Xors3D C++
Сообщение от ant0N
после этого должна быть ссылка на твой клон майнкрафта
|
Да чёт пока мне такая идея вообще не кажется интересной. Я недавно искал как на плюсах создавать быстро, просто и красиво приложухи с UI, хотя бы на винде, в идеале на кроссплатформе, и пришёл к выводу что Qt слишком тяжелый для каких-то маленьких проектов, а вот связка ImGui и SFML будет в самый раз, осталось только её проверить на практике.
|
(Offline)
|
|
20.09.2021, 00:39
|
#15
|
Принтер
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 570
Написано 342 полезных сообщений (для 1,242 пользователей)
|
Ответ: Minecraft на Xors3D C++
Сообщение от STekLyAToR
Да чёт пока мне такая идея вообще не кажется интересной. Я недавно искал как на плюсах создавать быстро, просто и красиво приложухи с UI, хотя бы на винде, в идеале на кроссплатформе, и пришёл к выводу что Qt слишком тяжелый для каких-то маленьких проектов, а вот связка ImGui и SFML будет в самый раз, осталось только её проверить на практике.
|
Вообще не понял в чем прикол Qt'а. Заставили как-то в шараге на нем на питоне (лол) покодить. Вообще какая-то сектантская штука -- всё, как не у людей. Вроде сверху есть место для вкладок, но всё равно открыть можно только одно. Вроде есть хайлайтинг какой-то, но в питоне конкретно вообще через задницу работает. Сам интерфейс вообще не как у людей. После джет бреинса и визуалки совершенно противно им было пользоваться.
Ну это целиком моё имхо. Чендж май майнд.
Интересно, есть ли те, кто сегодня пользуется кьютом из собственных порывов, а не из-за работы
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:04.
|