내 접근 방식. 코어 - 엔진. - 페이지 6

 
Peter, 당신은 황소의 눈 앞에 빨간 누더기와 같은 OOP를 가지고 있습니다. 다른 스레드는 당신만큼 OOP에 대해 논의하지 않습니다. 그리고 이것은 이 모든 시간 동안 바로 이 OOP에 대해 단일 프로그램을 작성하지 않았다는 사실에도 불구하고. 이 모든 것이 이상하지 않습니까?
 
Vasiliy Sokolov :
Peter, 당신은 황소의 눈 앞에 빨간 누더기와 같은 OOP를 가지고 있습니다. 다른 스레드에는 당신만큼 많은 OOP 토론이 없습니다. 그리고 이것은 이 모든 시간 동안 바로 이 OOP에 대해 단일 프로그램을 작성하지 않았다는 사실에도 불구하고. 이 모든 것이 이상하지 않습니까?

나는 단지 제안에 답할 뿐이며 접근 방식 내에서 OOP를 사용 합니다. 이러한 접근 방식은 호환되지 않습니다.

따라서 내부에서 OOP 구문을 사용하지 않는 이유를 설명하지 않고 내 접근 방식을 계속 설명할 것입니다.


내가 그것을 사용하지 않는다면, 그것은 필요하지 않습니다.

 
Dmitry Fedoseev :

둘 다 거짓입니다.

topicstarter를 드래그하지 마십시오! 그것은 이미 6 페이지이고 그가 보여주고 싶은 것은 아직 명확하지 않지만 모든 것이 커널 에 있다는 것은 분명합니다 )))

예를 보여주고 OOP가 소프트웨어 개발 시간을 단축시킨다는 것을 그에게 확신시킬 것입니다.)

 
아무것도 아닌 여섯 페이지. 상인에게 가장 중요한 것은 이익이 있다는 것입니다. :) 그리고 코드에 OOP가 있든 없든 이것은 부차적입니다.
 
Реter Konow :

내가 그것을 사용하지 않는다면, 그것은 필요하지 않습니다.

이해하지 못하는 것이 있으면 사용할 필요가 없습니다. 따라서 메가 라이브러리에서 무엇을 하든 OOP는 "필요하지 않습니다".

 
Vasiliy Sokolov :

이해하지 못하는 것이 있으면 사용할 필요가 없습니다. 따라서 메가 라이브러리에서 무엇을 하든 OOP는 "필요하지 않습니다".

 

자, 간단하게 시작해 보겠습니다. proto-kernel 내부에 요소 프로토타입을 만듭니다.

 int P_CORE[ 3 ][ 5 ] = {
//Основание кнопки.-----------------------------
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
//----------------------------------------------
{   100 , 100 ,     200 ,     50 ,     C'245,245,245' },
//---------------------------------------------- 
//Текст кнопки.---------------------------------
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
//----------------------------------------------
{   120 , 120 ,     0 ,       0 ,       C'245,0,0' },
//---------------------------------------------- 
//Иконка кнопки.-------------------------------- 
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
{   140 , 140 ,     16 ,     16 ,           0 },
//---------------------------------------------- 
};


P_CORE - массив. Я называю его прото-ядром, потому что он содержит прототип элемента, который далее будет изменен.

Элемент кнопка состоит из 3-ех объектов. Каждому из них мы предоставили 5 свойств.
 

따라서 요소는 확장된 표 형식으로 proto-kernel에 표시됩니다.

표 보기에는 장점이 있습니다. 우선 - 사이클에서.


이제 요소를 생성하는 함수를 작성해 보겠습니다.

하지만 먼저 요소의 속성을 쉽게 액세스할 수 있도록 정의를 통해 정의해 보겠습니다.

 
#define BASE        0
#define TEXT        1
#define ICON        2
//-------------------
#define X           0
#define X_SIZE      1
#define Y           2
#define Y_SIZE      3
#define BG_COLOR    4
#define TEXT_COLOR  4
//-------------------
//Вот как будут выглядеть обращения к свойствам элемента:

P_CORE[BASE][X]
P_CORE[BASE][Y]
P_CORE[BASE][X_SIZE]
P_CORE[BASE][Y_SIZE]
P_CORE[BASE][COLOR]

P_CORE[TEXT][X]
P_CORE[TEXT][Y]
P_CORE[TEXT][X_SIZE]
P_CORE[TEXT][Y_SIZE]
P_CORE[TEXT][COLOR]

P_CORE[ICON][X]
P_CORE[ICON][Y]
P_CORE[ICON][X_SIZE]
P_CORE[ICON][Y_SIZE]
P_CORE[ICON][COLOR]
 

버튼을 생성하는 함수를 작성합니다:

 void Create_element( string name, string Text)
{
 ObjectCreate ( 0 ,name, OBJ_BUTTON , 0 , 0 , 0 );
 ObjectSetInteger ( 0 ,name, OBJPROP_XDISTANCE ,P_CORE[BASE][X]);
 ObjectSetInteger ( 0 ,name, OBJPROP_YDISTANCE ,P_CORE[BASE][Y]);
 ObjectSetInteger ( 0 ,name, OBJPROP_XSIZE ,P_CORE[BASE][X_SIZE]);
 ObjectSetInteger ( 0 ,name, OBJPROP_YSIZE ,P_CORE[BASE][Y_SIZE]);
 ObjectSetString ( 0 ,name, OBJPROP_TEXT ,Text);
 //----------------------------------------------
 ObjectSetInteger ( 0 ,name, OBJPROP_BGCOLOR ,P_CORE[BASE][BG_COLOR]));
 ObjectSetInteger ( 0 ,name, OBJPROP_COLOR ,P_CORE[TEXT][TEXT_COLOR])); 
 //----------------------------------------------
 ObjectSetInteger ( 0 ,name, OBJPROP_CORNER , CORNER_LEFT_UPPER );
 ObjectSetInteger ( 0 ,name, OBJPROP_ANCHOR , ANCHOR_LEFT_UPPER ); 
}


물론 누군가는 코어가 필요하지 않다고 말할 것입니다. 다음과 같은 호출이면 충분합니다.

Create_element(name,x,y,x_size,y_size,text,anchor,corner...)

모든 것이 동일할 것입니다. 네, 하지만 처음에만요. 이러한 챌린지의 문제점은 정상적으로 개발할 수 없다는 것입니다.


우리는 각 요소의 속성이 전역 메모리에서 정렬되고 가장 간단하게 액세스할 수 있기를 원합니다.