From d561cf318be5b8c39a434db03422400e7a65f980 Mon Sep 17 00:00:00 2001 From: Arseniy Date: Thu, 3 Jul 2025 20:02:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D0=B9=D0=BA=D1=83=20=D0=BD=D0=B0=20C=20=D0=B2=20Op?= =?UTF-8?q?enGL.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .kdev4/test.kdev4 | 41 +++++ CMakeLists.txt | 2 +- main | Bin 0 -> 40232 bytes main.cpp | 450 +++++++++++++++++++++++++++++++++++++++++++++- main222 | Bin 0 -> 15952 bytes 6 files changed, 492 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 .kdev4/test.kdev4 create mode 100755 main create mode 100755 main222 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0187b3d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/ +*~ diff --git a/.kdev4/test.kdev4 b/.kdev4/test.kdev4 new file mode 100644 index 0000000..44f81ed --- /dev/null +++ b/.kdev4/test.kdev4 @@ -0,0 +1,41 @@ +[Buildset] +BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x08\x00t\x00e\x00s\x00t) + +[CMake] +Build Directory Count=1 +Current Build Directory Index-Основная система=0 + +[CMake][CMake Build Directory 0] +Build Directory Path=/home/romenskiy2012/projects/test/build +Build Type=Debug +CMake Binary=/usr/bin/cmake +CMake Executable=/usr/bin/cmake +Environment Profile= +Extra Arguments= +Install Directory=/usr/local +Runtime=Основная система + +[Launch] +Launch Configurations=Launch Configuration 0 + +[Launch][Launch Configuration 0] +Configured Launch Modes=execute +Configured Launchers=nativeAppLauncher +Name=Новая конфигурация «Компилируемая программа» +Type=Native Application + +[Launch][Launch Configuration 0][Data] +Arguments= +Dependencies=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x00) +Dependency Action=Nothing +EnvironmentGroup= +Executable=file:///home/romenskiy2012/projects/test +External Terminal=konsole --noclose --workdir %workdir -e %exe +Kill Before Executing Again=4194304 +Project Target=test,test +Use External Terminal=true +Working Directory= +isExecutable=false + +[Project] +VersionControlSupport=kdevgit diff --git a/CMakeLists.txt b/CMakeLists.txt index d18d8d3..7c12fe2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.0) project(test) - +set (CMAKE_CXX_FLAGS "-L /lib/libglut.so -lglut -lGLU -lGL") add_executable(test main.cpp) install(TARGETS test RUNTIME DESTINATION bin) diff --git a/main b/main new file mode 100755 index 0000000000000000000000000000000000000000..c8ca99f932364d15d01642b0391aa13f7a164814 GIT binary patch literal 40232 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 +#include +#include +#include + +//SAS_M d, m[1]; +bool play = 1; +int score = 0; +float k; +//struct M = SAS_M; +unsigned char goal_direction = 0; +unsigned char map[16][16]; +unsigned char direction = 0; // вверх 0 внис 1 вправо 2 влево 3 +void redirection(unsigned char& s,int p){ + switch (p){ + case 0 : + if (direction != 1) s = 0; break; + case 1 : + if (direction != 0) s = 1; break; + case 2 : + if (direction != 3) s = 2; break; + case 3 : + if (direction != 2) s = 3; break; + + } +} +//unsigned char snaik[] = {2,2}; +struct snaik_tip{ + unsigned char x; + unsigned char y; + struct snaik_tip *next = NULL; +}; +snaik_tip snaik; + +/* +Построй связанный масив для змеи, в нём будут кардинаты секций змеи +Главный масив используем только как карта, камни, края, яблоко. + +Как таргетить поподение в свой хост ??? +При новом рендоре, сверяем кординаты хвоста с кординатоми головы. + +*/ +//int spid = 1000000000; +int spid = 500000000; +float spid_multiplier = 0.01; +//int x = rand() % (0 - 15); +double i = 1.0f; +double *a = &i; +void apol(){ + srand(time(NULL)); + int num = 0 + rand() % (15 - 0 + 1); + int num_2 = 0 + rand() % (15 - 0 + 1); + std::cout << "num: " << num << "num_2: " << num_2 << std::endl; + map[num][num_2] = 1; +} +void apol(int& spid){ + srand(time(NULL)); + int num = 0 + rand() % (15 - 0 + 1); + int num_2 = 0 + rand() % (15 - 0 + 1); + std::cout << "num: " << num << "num_2: " << num_2 << std::endl; + map[num][num_2] = 1; + spid = spid / (1.1 - spid_multiplier); + //spid_multiplier = spid_multiplier + 0.05; + score = score + 100; +} +void number_bit(unsigned char x){ + // https://r2ino.ru/img/cms/Lessons/Arduino-7-Segment-Display-Tutorial-Segment-Layout-Diagram%5B1%5D.png + + if (x & 1){ // A 0000001 + glVertex2f(0.5, 1); + glVertex2f(-0.5, 1); + } + if (x & 2){ // B 0000010 + glVertex2f(0.5, 1); + glVertex2f(0.5, 0); + } + if (x & 4){ // C 0000100 + glVertex2f(0.5, 0); + glVertex2f(0.5, -1); + } + if (x & 8){ // D 0001000 + glVertex2f(0.5, -1); + glVertex2f(-0.5, -1); + } + if (x & 16){ // E 0010000 + glVertex2f(-0.5, 0); + glVertex2f(-0.5, -1); + } + if (x & 32){ // F 0100000 + glVertex2f(-0.5, 1); + glVertex2f(-0.5, 0); + } + if (x & 64){ // G 1000000 + glVertex2f(0.5, 0); + glVertex2f(-0.5, 0); + } +} +void displayMe(void){ + + //glClearColor(0.8f,0.8f,0.0f,0.0f); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + //glClear(GL_COLOR_BUFFER_BIT); + glutPostRedisplay(); + glPushMatrix(); + + /* + glLineWidth(5); + glBegin(GL_LINES); + glColor3f(0.1f,0.8f,0.0f); + // https://r2ino.ru/img/cms/Lessons/Arduino-7-Segment-Display-Tutorial-Segment-Layout-Diagram%5B1%5D.png + // A 0000001 + glVertex2f(0.5, 1); + glVertex2f(-0.5, 1); + // B 0000010 + glVertex2f(0.5, 1); + glVertex2f(0.5, 0); + // C 0000100 + glVertex2f(0.5, 0); + glVertex2f(0.5, -1); + // D 0001000 + glVertex2f(0.5, -1); + glVertex2f(-0.5, -1); + // E 0010000 + glVertex2f(-0.5, 0); + glVertex2f(-0.5, -1); + // F 0100000 + glVertex2f(-0.5, 1); + glVertex2f(-0.5, 0); + // G 1000000 + glVertex2f(0.5, 0); + glVertex2f(-0.5, 0); + number(24); + */ + + + //glTranslatef(-1,-1,0); + //glRotatef(i,0.0f,0.0f,1.0f); + + glBegin(GL_POLYGON); + //glTranslatef(-1,-1); + for (int y = 0; y != 16; y+=1){ + for (int x = 0; x != 16; x+=1){ + //map[y][x]; + //std::cout << "y: " << float(y)/8-1 << " x :" << float(x)/8-1 << '\n'; + if (map[y][x] == 1){ + glLoadIdentity(); + glOrtho(-k,k, -1,1, -1,1); + glTranslatef(float(x)/8-1,float(y)/8-1,0); + glBegin(GL_POLYGON); + glColor3f(0.1f,0.8f,0.0f); + glVertex2f(0, 0); + glVertex2f(0.1, 0); + + glVertex2f(0.1, 0.1); + glVertex2f(0, 0.1); + } + + glEnd(); + + } + } + + //glLoadIdentity(); + + + + //glLoadIdentity(); + snaik_tip* segment = &snaik; + //do { + float x = 1.0f; + while (segment != NULL){ + glLoadIdentity(); + glOrtho(-k,k, -1,1, -1,1); + glTranslatef(float(segment->y)/8-1,float(segment->x)/8-1,0); + glBegin(GL_POLYGON); + glColor3f(x,x,x); + glVertex2f(0, 0); + glVertex2f(0.1, 0); + glVertex2f(0.1, 0.1); + glVertex2f(0, 0.1); + if (x < 0.5) x = x - 0.01; + else x = x - 0.05; + /* + glColor3f(0.1f,0.8f,0.0f); glVertex2f(0, 0); + glColor3f(0.7f,0.0f,0.2f); glVertex2f(0.1, 0); + glColor3f(0.0f,0.1f,0.8f); glVertex2f(0.1, 0.1); + glColor3f(0.7f,0.0f,0.2f); glVertex2f(0, 0.1); + */ + glEnd(); + segment = segment->next; + //printf("TEST: \n"); + } //while (segment->next != NULL); + + + //glPushMatrix(); + //glutSwapBuffers(); + //double& i = &i; + //double& i += 0.1f; + //Sleep (1); + + + + float P = 0.04f; + //int i = 82301; + // 823/10%10 = 2 + int i = score; + do { + glLoadIdentity(); + glOrtho(-k,k, -1,1, -1,1); + glTranslatef(1.0f-P,1.0f-0.04f,0); + glScalef(0.04,0.04,1); + P = P + 0.06f; + + glLineWidth(2); + glBegin(GL_LINES); + glColor3f(0.1f,0.8f,0.0f); + + switch (i%10){ + case 1 : number_bit(6); break; + case 2 : number_bit(91); break; + case 3 : number_bit(79); break; + case 4 : number_bit(102); break; + case 5 : number_bit(109); break; + case 6 : number_bit(125); break; + case 7 : number_bit(7); break; + case 8 : number_bit(127); break; + case 9 : number_bit(111); break; + case 0 : number_bit(63); break; + } + i = i / 10; + glEnd(); + + + }while (i >= 1); + glLoadIdentity(); + glOrtho(-k,k, -1,1, -1,1); + glLineWidth(2); + glBegin(GL_LINES); + glVertex2f(1, -1); + glVertex2f(-1, -1); + glVertex2f(1, 1); + glVertex2f(-1, 1); + + glVertex2f(1, -1); + glVertex2f(1, 1); + glVertex2f(-1, -1); + glVertex2f(-1, 1); + + glEnd(); + + + glutSwapBuffers(); + //glPushMatrix(); + + glFlush(); + //std::this_thread::sleep_for(std::chrono::nanoseconds(spid)); +} + +void TEST(int key, int x, int y){ + printf("goal_direction: %i\n", goal_direction); + switch (key){ + case 100 : printf("GLUT_KEY_LEFT %d\n",key) ; redirection(goal_direction, 3); break; + case 102 : printf("GLUT_KEY_RIGHT %d\n",key); redirection(goal_direction, 2); break; + case 101 : printf("GLUT_KEY_UP %d\n",key) ; redirection(goal_direction, 0); break; + case 103 : printf("GLUT_KEY_DOWN %d\n",key) ; redirection(goal_direction, 1); break; + } +} +void callback(const std::string& data){ + std::cout << "Callback called because: " << data << '\n'; +} +/* +1 2 3 4 5 +A = 1 +x = A_1->x # 1 +x_2 = A->next->x # 2 + +A->next->x = x # 1 1 3 4 5 +x = x_2 # 2 +A = A->next # 1 +x_2 = A->next->x # 3 + + + +A_1 = A_1->next +A_2 = A_2->next +A_2->x = x # 1 1 2 4 5 + + + + +A_1->x = A_1->next->x# 2 2 3 4 5 +A_1 = A_1->next # 2 +A_1->x = A_1->next->x# 2 3 3 4 5 + + + +A_1 = A_3 # 2 2 3 4 5 +A_3 = A_3->next +" +A_1 = 2 +A_2 = 1 +A_3 = 3 +" +A_1 = A_3 # 2 2 3 4 5 + + + + +*/ +void tail(bool& play){ + snaik_tip* segment = &snaik; + unsigned char cord[2][2]; + cord[0][0] = segment->x; + cord[0][1] = segment->y; + int x = 0; + printf("snaik: x=%i, y=%i\n", snaik.y, snaik.x); + unsigned char head_x = segment->x, head_y = segment->y; + while (segment->next != NULL){ + cord[1][0] = segment->next->x; + cord[1][1] = segment->next->y; + printf("tail x: %i y: %i\n", segment->x, segment->y); + std::cout << "ID: " << segment << '\n'; + segment->next->x = cord[0][0]; + segment->next->y = cord[0][1]; + if (cord[1][0] == head_x and cord[1][1] == head_y){ + printf("GAME OWER!!!\nGAME OWER!!!\nGAME OWER!!!\nGAME OWER!!!\nGAME OWER!!!\nGAME OWER!!!\nGAME OWER!!!\n"); + printf("segment x: %i y: %i ID: %i\n", cord[1][0], cord[1][1], x); + printf("head x: %i y: %i\n", head_x, head_y); + play = 0; + + } + cord[0][0] = cord[1][0]; + cord[0][1] = cord[1][1]; + + segment = segment->next; + x++; + } + printf("\n-------------------------------\n"); +} +/* +void tail(){ + snaik_tip* segment_l1 = &snaik; + snaik_tip* segment_l2 = segment_l1->next; + snaik_tip* segment_l3 = segment_l1->next; + while (segment_l3 != NULL){ + printf("LLLLL x: %i y: %i\n", segment_l1->x, segment_l1->y); + std::cout << "NNNN: " << segment_l1 << '\n'; + segment_l3->x = segment_l1->x; + segment_l3->y = segment_l1->y; + segment_l1 = segment_l3; + segment_l2 = segment_l1->next; + } +} +*/ + +void task(void){ + while (play){ + std::this_thread::sleep_for(std::chrono::nanoseconds(spid)); + //displayMe(); + + //SAS_s(i); + tail(play); + direction = goal_direction; + switch (goal_direction){ + case 0 : + snaik.x = snaik.x + 1; + if (snaik.x == 16) snaik.x = 0; + break; + case 1 : + if (snaik.x == 0) snaik.x = 16; + snaik.x = snaik.x - 1; + break; + case 2 : + snaik.y = snaik.y + 1; + if (snaik.y == 16) snaik.y = 0; + break; + case 3 : + if (snaik.y == 0) snaik.y = 16; + snaik.y = snaik.y - 1; + break; + } + //if (snaik[1] == -1) snaik[1] = 16; + //else if (snaik[0] == -1) snaik[0] = 16; + //else else if (snaik[1] == 15) snaik[1] = 0; + //else if (snaik[0] == 15) snaik[0] = 0; + printf("snaik: x=%i, y=%i\n", snaik.y, snaik.x); + std::cout << "TEST: " << snaik.next << '\n'; + if (map[snaik.x][snaik.y] == 1){ + map[snaik.x][snaik.y] = 0; + apol(spid); + //snaik_tip *q; + //q = (snaik_tip *) malloc(sizeof(snaik_tip)); + //q->x = 4; + //q->y = 4; + //snaik.next = q; + + snaik_tip* segment = &snaik; + while (segment != NULL){ + if (segment->next == NULL){ + snaik_tip *q; + q = (snaik_tip *) malloc(sizeof(snaik_tip)); + /* + q->x = segment->x; + q->y = segment->y; + */ + // Костыль для первого элемента. + q->x = 16; + q->y = 16; + segment->next = q; + segment = q; + } + segment = segment->next; + } + } + //waitEvent(); + printf("SAS %i\n", goal_direction); + //std::cout << "goal_direction: " << goal_direction << '\n'; + } + //callback("async task done"); +} +void ChangeWindow(int width, int height){ + printf("width: %i width: %i\n", width, height); + glViewport(0,0, width, height); + glLoadIdentity(); + k = width / (float)height; + glOrtho(-k,k, -1,1, -1,1); +} +int main(int argc, char** argv) +{ + snaik.x = 2; + snaik.y = 2; + for (int x = 0; x != 15; x+=1){ + for (int i = 0; i != 15; i+=1){ + map[x][i] = 0; + } + } + apol(); + //GetKeyState(VK_UP); + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_SINGLE); + glutInitWindowSize(800, 800); + glutInitWindowPosition(100, 100); + glutCreateWindow("Hello world!"); + glutDisplayFunc(displayMe); + glutReshapeFunc(ChangeWindow); + std::thread bt(task); + glutSpecialFunc(TEST); + glutMainLoop(); + -int main(int argc, char **argv) { - std::cout << "Hello, world!" << std::endl; return 0; } diff --git a/main222 b/main222 new file mode 100755 index 0000000000000000000000000000000000000000..38aee67af866216457f09c5f7a51d69c95c76546 GIT binary patch literal 15952 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 literal 0 HcmV?d00001