Фізико - технічний ліцей при ІФНТУНГ -
Вхід | Реєстрація
Сторінка 1 з 3123»
Форум » Олімпіади » Турнір юних інформатиків » Що потрібно вміти для олімпіад с інформатики і турнірів?
Що потрібно вміти для олімпіад с інформатики і турнірів?
CosmoUPДата: Вівторок, 20.09.2011, 19:31 | Повідомлення # 1
Капітан
Група: Користувачі
Повідомлень: 84
Статус: Offline
« »
Що потрібно вміти для олімпіад с інформатики і турнірів?
Я програмую на Сі... От моя гра (нижче файл).
Ось її старий код, так як я новий не буду розміщати, тому що він не дуже понятний, бо я ще щось дописував і забив, тепер це видалив і готово. спочатку це мала бути стаття на programmersforum.ru , але потом я просто там виставив код, згодом мене почали казали що код дуже не зрозумілий і не читабельний, заставили переписати, я взявся і переписав на цей код (теж нижче прикріплено). ah як вам код і гра?чи на першому курсі для олімпіад треба набагато більше знати.

потом ще кину ссилку на тему з кодом...

P/S пам'ятаєте мою першу гру, яку я розмістив на цьому сайті?
Прикріплення: Made_in_Ukraine.rar(275Kb)


невелика ссилка для гуглу http://www.school.thv.org.ua
 
uabobanДата: Вівторок, 20.09.2011, 20:15 | Повідомлення # 2
Рядовий
Група: Користувачі
Повідомлень: 11
Статус: Offline
« »
незнаю, в мене чомусь не запускається гра.. bh bm


Дякуйте москалі, шо я не Бог!
 
CosmoUPДата: Вівторок, 20.09.2011, 20:19 | Повідомлення # 3
Капітан
Група: Користувачі
Повідомлень: 84
Статус: Offline
« »
Розпакував весь архів? треба весь, там *.dll ?спробуй всі 3 длл в дебуг кинути в c:\Windows\system\ ... обіцяю з компом нічого не буде, ну через мене точно... на 99% впевнений... ну може на 70% якщо шось, то мене звати Віталій, я з Л-14

невелика ссилка для гуглу http://www.school.thv.org.ua
 
uabobanДата: Вівторок, 20.09.2011, 21:11 | Повідомлення # 4
Рядовий
Група: Користувачі
Повідомлень: 11
Статус: Offline
« »
хаах та я тоже можу назвати любе ім"я, але не про це, а шо обовязково в c:\Windows\system\ ... ??

Додано (20.09.2011, 21:11)
---------------------------------------------
а кидати з папкою Мейд Ін Юкрейн чи тіки Дебуг ?



Дякуйте москалі, шо я не Бог!


Повідомлення відредагував uaboban - Вівторок, 20.09.2011, 21:09
 
CosmoUPДата: Вівторок, 20.09.2011, 21:26 | Повідомлення # 5
Капітан
Група: Користувачі
Повідомлень: 84
Статус: Offline
« »
тільки *.dll, що в папці дебуг, без папки...

ні не обов*язково... мало би пахати якщо розпакувати архів... :(
я назвав своє ім'я.

А яку помилку вибиває? має спочатку відкритися консольне вікно, потом гра.

невелика ссилка для гуглу http://www.school.thv.org.ua
 
uabobanДата: Вівторок, 20.09.2011, 21:30 | Повідомлення # 6
Рядовий
Група: Користувачі
Повідомлень: 11
Статус: Offline
« »
перше пробував з архіву, вибиває консольне вікно, потім таке маленьке віконечко (як ігра сапер на новечку) але на 1 секунду і зразу зникає, потім розпакував, запускаю - те саме, зараз попробую длл кинути в Сістем


Дякуйте москалі, шо я не Бог!


Повідомлення відредагував uaboban - Вівторок, 20.09.2011, 21:30
 
CosmoUPДата: Вівторок, 20.09.2011, 21:32 | Повідомлення # 7
Капітан
Група: Користувачі
Повідомлень: 84
Статус: Offline
« »
не обов'язково в c:, в вінду гоовне :)

Додано (20.09.2011, 21:32)
---------------------------------------------
пробуй... дивно...


невелика ссилка для гуглу http://www.school.thv.org.ua
 
uabobanДата: Вівторок, 20.09.2011, 21:33 | Повідомлення # 8
Рядовий
Група: Користувачі
Повідомлень: 11
Статус: Offline
« »
те саме... bm так то папку дебуг кідати, чи самі длл і то всьо решту? cf

Додано (20.09.2011, 21:33)
---------------------------------------------
або то в мене руки криві, або твоя гра крива :) ah



Дякуйте москалі, шо я не Бог!
 
CosmoUPДата: Вівторок, 20.09.2011, 21:44 | Повідомлення # 9
Капітан
Група: Користувачі
Повідомлень: 84
Статус: Offline
« »
самі длл, яка в тебе вінда? 32-х бітна, чи 64-х? ігра не крива і твою руки не криві... треба зрозуміти в чому проблема aa

невелика ссилка для гуглу http://www.school.thv.org.ua
 
uabobanДата: Вівторок, 20.09.2011, 21:46 | Повідомлення # 10
Рядовий
Група: Користувачі
Повідомлень: 11
Статус: Offline
« »
32, я і самі длл кидав і та ж фігня... ah


Дякуйте москалі, шо я не Бог!
 
CosmoUPДата: Вівторок, 20.09.2011, 21:57 | Повідомлення # 11
Капітан
Група: Користувачі
Повідомлень: 84
Статус: Offline
« »
консольне вікно теж зникає? якщо ні, що там написано?

Додано (20.09.2011, 21:57)
---------------------------------------------
не нажимай нічого, бо закриєьься )

Додано (20.09.2011, 21:57)
---------------------------------------------
це якщо 2-ге вікно закрито


невелика ссилка для гуглу http://www.school.thv.org.ua
 
uabobanДата: Вівторок, 20.09.2011, 22:03 | Повідомлення # 12
Рядовий
Група: Користувачі
Повідомлень: 11
Статус: Offline
« »
послідовність така: відкриваю Sobiralka => появляється консольне вікно => одночасно зникає конс. вікно і появляється таке маленьке віконечко => за 1 сек. зникає. при цьому я нічо не нажимаю

Додано (20.09.2011, 22:03)
---------------------------------------------
я навіть невстигаю заскрінити цей момент коли воно зникає :(



Дякуйте москалі, шо я не Бог!
 
ДвоякДата: Вівторок, 20.09.2011, 22:24 | Повідомлення # 13
Рядовий
Група: Користувачі
Повідомлень: 17
Статус: Offline
« »
Для олімпіад та турнірів потрібно дуже добре знати мову програмування (Паскаль або Сі), вміти засобами цієї мови організовувати різні структури даних та працювати з ними. Крім того, необхідне ще знання алгоритмів з розділів обчислювальної геометрії, комбінаторики, графів, перебору, динамічного програмування тощо. Взагалі, приклади завдань олімпіад різних рівнів можна знайти на сайтах http://olympiada.km.ua, http://www.e-olimp.com/ua/problems, http://www.olymp.vinnica.ua і не тільки, або взяти у свого вчителя інформатики. Для турнірів потрібно візуальне програмування.
 
CosmoUPДата: Понеділок, 26.09.2011, 19:05 | Повідомлення # 14
Капітан
Група: Користувачі
Повідомлень: 84
Статус: Offline
« »
Quote (Двояк)
Для олімпіад та турнірів потрібно дуже добре знати мову програмування (Паскаль або Сі), вміти засобами цієї мови організовувати різні структури даних та працювати з ними. Крім того, необхідне ще знання алгоритмів з розділів обчислювальної геометрії, комбінаторики, графів, перебору, динамічного програмування тощо. Взагалі, приклади завдань олімпіад різних рівнів можна знайти на сайтах http://olympiada.km.ua, http://www.e-olimp.com/ua/problems, http://www.olymp.vinnica.ua і не тільки, або взяти у свого вчителя інформатики. Для турнірів потрібно візуальне програмування.


зрозуміло дякую. буду розбирати, як мій знайомий каже головне практика і я з ним погоджуюся.

Quote
послідовність така: відкриваю Sobiralka => появляється консольне вікно => одночасно зникає конс. вікно і появляється таке маленьке віконечко => за 1 сек. зникає. при цьому я нічо не нажимаю

окей, я розбируся, вся проблема в бібліотеках які я використовую. в деякої частини людей є цей глюк.

Quote
я навіть невстигаю заскрінити цей момент коли воно зникає :(

не страшно, скрінити не треба, я уявляю, що видно...

Двояк, якщо буде завтра вільний час ще рішу http://ftl.org.ua/forum/30-129-1 .

Додано (26.09.2011, 19:03)
---------------------------------------------
ходити W, S, A, D.

От я ступив!!! забув код виставити, ось:

Code

//спасибо всем кто помагал :)
#define GLFW_DLL//это для glfw
#define START_SHIP_X 0//стартова координата игрока по оси X
#define START_SHIP_Y 0//стартова координата игрока по оси Y
#define START_II_X 2560//стартовая координата искоственного интелекта по оси X
#define START_II_Y 0
#define SIZE_OBJECTS 160//розмер обьектов
#define MAX_POINTS 2560//конец оси X и Y
#define MINIMUM_POINTS 0//начало оси X и Y
#define MAX_ERROR 160//максимальная возвомжная погрешность при поднятии плода
#define MAX_Z_POINTS 1//конец оси Z
#define MINIMUM_Z_POINTS 0//начало оси Z
#define MAX_X_POINTS_BACKGROUND 2560//координаты фона для оси X
#define MINIMUM_X_POINTS_BACKGROUND 0//координаты фона для оси X
#define MAX_Y_POINTS_BACKGROUND 2560//координаты фона на оси Y
#define MINIMUM_Y_POINTS_BACKGROUND 0//координаты фона для оси Y
#define MAX_Y_TEXTURE 1//конец текстуры по оси Y
#define MAX_X_TEXTURE 1//конец текстуры по оси X
#define MINIMUM_Y_TEXTURE 0//начало текстуры по оси Y
#define MINIMUM_X_TEXTURE 0//начало текстуры по оси X

#include <GL/glfw.h>//подключаем glfw... я компилю на MinGW и подключаю такие либы:
#include <GL/glu.h>//glfw.a, glaux.a, libopengl32.a, libglu32.a, glfwdll.a .
#include <stdio.h>//printf ()
#include <GL/gl.h>
#include <GL/glaux.h>//это чисто для загрузки текстур, так как я грзить нормально текстуры не умею :(
#include <dos.h>

GLuint    texture[4];  // Место для текстур
BOOL on_off = "true";//поднят или не поднят плод
BOOL lvl [2561] [2561];
int plodov_sobarno = 0;//кол-во собраных плодов
int plodov_sobrano_ii = 0;

     struct point//структура для координат
     {
         int x;
         int y;
     }point;
//структура для обьектов
     typedef struct object{
     struct point one_points;
     struct point two_points;};

// Загрузка картинки и конвертирование в текстуру
GLvoid loading_textures()//часть этой функции взята из переведенных уроков Nehe: http://pmg.org.ru/nehe/nehe06.htm
{
     //там можна взять неплохое описание этой функции

  // Загрузка картинки
  AUX_RGBImageRec *texture1;
  texture1 = auxDIBImageLoad("textures/background.bmp");//фон

  // Создание текстуры
  glGenTextures(1, &texture[0]);
  glBindTexture(GL_TEXTURE_2D, texture[0]);

  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);

  // Загрузка картинки
  AUX_RGBImageRec *texture2;
  texture2 = auxDIBImageLoad("textures/plod.bmp");//плоды, которые мы будем собирать

  // Создание текстуры
  glGenTextures(2, &texture[1]);
  glBindTexture(GL_TEXTURE_2D, texture[1]);

  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  glTexImage2D(GL_TEXTURE_2D, 0, 3, texture2->sizeX, texture2->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture2->data);

  // Загрузка картинки
  AUX_RGBImageRec *texture3;
  texture3 = auxDIBImageLoad("textures/I.bmp");//я, ну то есть корабль которым я буду управлять

  // Создание текстуры
  glGenTextures(2, &texture[2]);
  glBindTexture(GL_TEXTURE_2D, texture[2]);

  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  glTexImage2D(GL_TEXTURE_2D, 0, 3, texture3->sizeX, texture3->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture3->data);

  // Загрузка картинки
  AUX_RGBImageRec *texture4;
  texture4 = auxDIBImageLoad("textures/II.bmp");//плоды, которые мы будем собирать

  // Создание текстуры
  glGenTextures(2, &texture[3]);
  glBindTexture(GL_TEXTURE_2D, texture[3]);

  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
  glTexImage2D(GL_TEXTURE_2D, 0, 3, texture4->sizeX, texture4->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture4->data);

}

void plods (struct object *plod)//функция для создания плодов, для нее передаем указатель на структуру плода
{
         plod->one_points.x = rand()%(MAX_POINTS-SIZE_OBJECTS) + MINIMUM_POINTS;//получаем рандомно координаты
         plod->one_points.y = rand()%(MAX_POINTS-SIZE_OBJECTS) + MINIMUM_POINTS;

         plod->two_points.x = plod->one_points.x + SIZE_OBJECTS;//создаем вторые координаты, т.к. у нас обьекты квадратные, мы просто добавляем SIZE_OBJECTS
         plod->two_points.y = plod->one_points.y + SIZE_OBJECTS;
         printf("x=%d,y=%d\n", plod->one_points.x, plod->one_points.y);//выводим координаты в консоль
}

void movement (struct object *ship)//функция управления нашим кораблем
{

     if (glfwGetKey(0x0057))//вперед, клавиша W
     {
         if (ship->two_points.y < MAX_POINTS && lvl [ship->one_points.y + 1] [ship->one_points.x] == "false")//чтобы не заходили за конци карты
         {
             ship->one_points.y = ++ship->one_points.y;
             ship->two_points.y = ++ship->two_points.y;
         }
     }
     if (glfwGetKey (0x0053))//назад, клавиша S
     {
         if (ship->one_points.y > MINIMUM_POINTS && lvl [ship->one_points.y - 1] [ship->one_points.x] == "false")
         {
             ship->one_points.y = --ship->one_points.y;
             ship->two_points.y = --ship->two_points.y;
         }
     }
     if (glfwGetKey(0x0041))//влево, клавиша A
     {
         if (ship->one_points.x > MINIMUM_POINTS && lvl [ship->one_points.y] [ship->one_points.x - 1 ] == "false")
         {
             ship->one_points.x = --ship->one_points.x;
             ship->two_points.x = --ship->two_points.x;
         }
     }
     if (glfwGetKey(0x0044))//вправо, клавиша D
     {
         if (ship->two_points.x < MAX_POINTS && lvl [ship->one_points.y] [ship->one_points.x + 1 ] == "false")
         {
             ship->one_points.x = ++ship->one_points.x;
             ship->two_points.x = ++ship->two_points.x;
         }
     }
}

void keep (struct object ship, struct object plod, struct object ship_ii)//функция по проверке стали ли мы на плод
{
         if (ship.one_points.x >= plod.one_points.x - MAX_ERROR && ship.one_points.x <= plod.one_points.x + MAX_ERROR && ship.one_points.y >= plod.one_points.y - MAX_ERROR && ship.one_points.y <= plod.one_points.y + MAX_ERROR)//если мы стали на координаты плода, изменяем добавляем В :)
         {
             on_off = "true";//отключаем плод
             plodov_sobarno++;//кол-во собраных плодов
         }
         else if (ship_ii.one_points.x >= plod.one_points.x - MAX_ERROR && ship_ii.one_points.x <= plod.one_points.x + MAX_ERROR && ship_ii.one_points.y >= plod.one_points.y - MAX_ERROR && ship_ii.one_points.y <= plod.one_points.y + MAX_ERROR)
         {
             on_off = "true";//отключаем плод
             plodov_sobrano_ii++;//кол-во собраных плодов
         }
}

void movement_ii (struct object *ship_ii, struct object plod)
{
     if (ship_ii->one_points.x > plod.one_points.x && lvl [ship_ii->one_points.y] [ship_ii->one_points.x - 1] == "false")
     {
         ship_ii->one_points.x--;
         ship_ii->two_points.x--;
     }
     else if (ship_ii->one_points.x < plod.one_points.x && lvl [ship_ii->one_points.y] [ship_ii->one_points.x + 1 ] == "false")
     {
         ship_ii->one_points.x++;
         ship_ii->two_points.x++;
     }

     if (ship_ii->one_points.y > plod.one_points.y && lvl [ship_ii->one_points.y - 1] [ship_ii->one_points.x] == "false")
     {
         ship_ii->one_points.y--;
         ship_ii->two_points.y--;
     }
     else if (ship_ii->one_points.y < plod.one_points.y && lvl [ship_ii->one_points.y + 1] [ship_ii->one_points.x] == "false")
     {
         ship_ii->one_points.y++;
         ship_ii->two_points.y++;
     }
}

void load_lvl ()
{
     //здесь будем загружать лвл
     int x = 0;
     int y;
     while(x < 2561)
     {
         y = 0;
         for (; y < 2561; y++)
         {
             lvl[x][y] = "false";
         }

         ++x;
     }
     lvl[1000][1000]= "true";
     printf("%d\n", lvl[1][1000]);

}

void screen ()//выводим все на экран
{
     if (glfwInit())//запускаем glfw, если да делаем окно
     {
         if(glfwOpenWindow(256,256,0,0,0,0,0,0,GLFW_WINDOW))//открываем окно 256*256, если открыли рисуем
         {
             BOOL running = "false";//для проверки открыто ли окно и нажате ли клавиша ESC
             srand((unsigned)time(NULL));//это для rand()
             load_lvl();
             int lvl_x = 0;
             int lvl_y = 0;

             struct object ship;//создаем корабль
             ship.one_points.x=START_SHIP_X;//присваиваем ещё стартовые координаты
             ship.one_points.y=START_SHIP_Y;
             ship.two_points.x=START_SHIP_X + SIZE_OBJECTS;
             ship.two_points.y=START_SHIP_Y + SIZE_OBJECTS;

             struct object ship_ii;
             ship_ii.one_points.x=START_II_X;
             ship_ii.one_points.y=START_II_Y;
             ship_ii.two_points.x=START_II_X + SIZE_OBJECTS;
             ship_ii.two_points.y=START_II_Y + SIZE_OBJECTS;

             struct object plod;//создаем плод
             plods(&plod);//выщитываем новые координаты
             loading_textures();//загружаем все текстуры, потом будем к ним обращятся через их ID

             while(running)//цикл рисования
             {
                 lvl_x=0;

                 glClear( GL_DEPTH_BUFFER_BIT); // Очищаем буфер глубины.
                 glDisable( GL_DEPTH_TEST); // Выключаем буфер глубины, для создания фона

                 glClear(GL_COLOR_BUFFER_BIT);//очистка
                 glLoadIdentity();//сброс
                 glOrtho (MINIMUM_POINTS,MAX_POINTS,MINIMUM_POINTS,MAX_POINTS,MINIMUM_Z_POINTS,MAX_Z_POINTS);//создаем систему координат

                 glBindTexture(GL_TEXTURE_2D, texture[0]);//ищем текстуру фона, следующий полигон будет для фона
                 glEnable(GL_TEXTURE_2D);// Разрешение наложение текстуры
                 glBegin(GL_POLYGON);//рисуем полигон
                     glTexCoord2f(MINIMUM_X_TEXTURE, MINIMUM_Y_TEXTURE);//выставляем вершины текстуры на вершины квадрата
                     glVertex2d(MINIMUM_POINTS, MINIMUM_POINTS);//координаты самих вершин квадрата

                     glTexCoord2f(MINIMUM_X_TEXTURE, MAX_Y_TEXTURE);
                     glVertex2d(MINIMUM_POINTS, MAX_POINTS);

                     glTexCoord2f(MAX_X_TEXTURE, MAX_Y_TEXTURE);
                     glVertex2d(MAX_POINTS,MAX_POINTS);

                     glTexCoord2f(MAX_X_TEXTURE, MINIMUM_Y_TEXTURE);
                     glVertex2d(MAX_POINTS,MINIMUM_POINTS);
                 glEnd();//заканчиваем рисования фона
                 glEnable( GL_DEPTH_TEST); // Включаем буфер глубины и можем нормально рисовать по фону

                 glBindTexture(GL_TEXTURE_2D, texture[1]);//ищем текстуру плода
                 glEnable(GL_TEXTURE_2D);

                 glBindTexture(GL_TEXTURE_2D, texture[1]);//ищем текстуру плода
                 glEnable(GL_TEXTURE_2D);

                 glBegin(GL_POLYGON);//рисуем плод
                         glTexCoord2f(MINIMUM_X_TEXTURE,MINIMUM_Y_TEXTURE);
                         glVertex2d(plod.one_points.x,plod.one_points.y);

                         glTexCoord2f(MINIMUM_X_TEXTURE,MAX_Y_TEXTURE);
                         glVertex2d(plod.one_points.x,plod.two_points.y);

                         glTexCoord2f(MAX_X_TEXTURE,MAX_Y_TEXTURE);
                         glVertex2d(plod.two_points.x,plod.two_points.y);

                         glTexCoord2f(MAX_X_TEXTURE,MINIMUM_Y_TEXTURE);
                         glVertex2d(plod.two_points.x,plod.one_points.y);
                 glEnd();//заканчиваем плод

                 glBindTexture(GL_TEXTURE_2D, texture[2]);//ищем текстуру корабля
                 glEnable(GL_TEXTURE_2D);
                 glBegin(GL_POLYGON);//рисуем корабль
                     glTexCoord2f(MINIMUM_X_TEXTURE,MINIMUM_Y_TEXTURE);
                     glVertex2d(ship.one_points.x,ship.one_points.y);

                     glTexCoord2f(MINIMUM_X_TEXTURE,MAX_Y_TEXTURE);
                     glVertex2d(ship.one_points.x,ship.two_points.y);

                     glTexCoord2f(MAX_X_TEXTURE,MAX_Y_TEXTURE);
                     glVertex2d(ship.two_points.x,ship.two_points.y);

                     glTexCoord2f(MAX_X_TEXTURE,MINIMUM_Y_TEXTURE);
                     glVertex2d(ship.two_points.x,ship.one_points.y);
                 glEnd();//заканчиваем корабль

                 glBindTexture(GL_TEXTURE_2D, texture[3]);//ищем текстуру корабля
                 glEnable(GL_TEXTURE_2D);
                 glBegin(GL_POLYGON);//рисуем корабль
                     glTexCoord2f(MINIMUM_X_TEXTURE,MINIMUM_Y_TEXTURE);
                     glVertex2d(ship_ii.one_points.x,ship_ii.one_points.y);

                     glTexCoord2f(MINIMUM_X_TEXTURE,MAX_Y_TEXTURE);
                     glVertex2d(ship_ii.one_points.x,ship_ii.two_points.y);

                     glTexCoord2f(MAX_X_TEXTURE,MAX_Y_TEXTURE);
                     glVertex2d(ship_ii.two_points.x,ship_ii.two_points.y);

                     glTexCoord2f(MAX_X_TEXTURE,MINIMUM_Y_TEXTURE);
                     glVertex2d(ship_ii.two_points.x,ship_ii.one_points.y);
                 glEnd();//заканчиваем корабль

                  glFlush();//выводим на экран, а не сохраняем в буфер
                  glfwSwapBuffers();

                  if (on_off == "true")//если да
                  {
                      on_off = "false";//включаем плод
                      plods(&plod);//выщитываем новые координаты

                  }

                  movement_ii (&ship_ii,plod);
                  movement(&ship);//ходим, передаем указатель на структуру корабля
                  keep(ship,plod,ship_ii);//проверка подняли ли мы плод

                  running=!glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam(GLFW_OPENED);//если окно закрыто, или нажата клавиша Esc - выход

             }

         }

         glfwTerminate();//удаляем
     }
     else
     {
         printf("error: 1. glfwInit");//если glfwInit ошибка, пишем её в консоль
     }
}

int main (int argc, char *argv[])
{
     screen();//рисуем

     printf("\nVy sobrali %d plod(ov)\n", plodov_sobarno);//пишем кол-во плодов после закрытия окна рисования на консоль
     printf("II sobralo %d plod(ov)\n", plodov_sobrano_ii);//пишем кол-во плодов после закрытия окна рисования на консоль

     if (plodov_sobarno > plodov_sobrano_ii)
     {
         printf("\n\n\n                    Vy vyigrali!!!\n\n\n");
     }
     else if (plodov_sobarno < plodov_sobrano_ii)
     {
         printf("\n\n\n                    Vy proigrali!!!\n\n\n");
     }
     else if (plodov_sobarno == plodov_sobrano_ii)
     {
         printf("\n\n\n                    Nichja!!!\n\n\n");
     }

     getch();//для завершения нажмите любую клавишу
     return 0;
}


там є парочка зайвих функцій, просто я хотів 1 прикол дописати, не вийшло :( ... точніше мені було ліньки ad

Додано (26.09.2011, 19:05)
---------------------------------------------
А ось це мій старий код (як вам прогрес?):

Code

#include <conio.h>
#include <iostream>
#include <clocale>
#include <ctime>

using namespace std;

char map[25][31];
int napr;
int yaii = 14;
int xaii = 10;
int aiifuel = 10;
int xy = 15 - yaii;
int yx = yaii - 15;
int xy1 = 10 - xaii;
int yx1 = xaii - 10;

int aii()// зделать бензин
{

  if (aiifuel < 6)
  {

      if (yaii < 15)
   {

    yaii++;

   }
   else if (yaii > 15)
   {
    yaii--;
   }

   if (xaii < 10)
   {
    xaii++;
   }
   else if (xaii > 10)
   {
    xaii--;
   }

  }
  else
     napr = rand() % 4;
     map [yaii][xaii] = ' ';
     switch(napr) {
     case 0:
         ++yaii;
         break;
     case 1:
         --yaii;
         break;
     case 2:
         ++xaii;
         break;
     case 3:
         --xaii;
         break;
     }
     map [yaii][xaii] = 'X';
return map [yaii][xaii];
}

int fuel (char map [25][31], int fuel)
{
fuel = fuel - 1;
if (map [15][10] == 'T')
{
fuel = 20;
}

if (fuel == 0)
{
system("cls");
cout << "Вы проиграли!";
exit(0);
}
return fuel;
}

int main()
{
  srand(time(0));
  setlocale(LC_CTYPE,"Russian");

// инициализация массива

  for (int p = 0; p < 23; p++)
  {
   for (int o = 0; o < 30; o++)
   {
map[p][o] = ' ';  
   }
  }

for (int l = 0; l < 30; l = l + 1)
{
map [l][22] = '|';
}
for (int k = 0; k < 22; k = k + 1)
{
map [21][k] = '-';
}
char act;
int bbb;
int x = 15;
int y = 10;
int afuel = 20;

map [10][15] = 'T';
map [15][10] = 'C';
    for (int i = 0; i < 22; i++)
  {
   for (int j = 0; j < 30; j++)
   {
    cout << map[i][j]; // в циклах поэлементно выводится массив
   }
   cout << "\n"; // переход на новую строку после каждого "ряда"
  }
  cout << "Управление - стрелочками, выход - Esc, другой лвл - R.\n";

for (;;)
{
act = _getch();
bbb = static_cast<int>(act);
if (bbb == -32)
{
}
else if (bbb == 114)
{
   system("cls");
  for (int p = 0; p < 23; p++)
  {
   for (int o = 0; o < 30; o++)
   {
map[p][o] = ' ';  
   }
  }

for (int l = 0; l < 30; l = l + 1)
{
map [l][22] = '|';
}
for (int k = 0; k < 22; k = k + 1)
{
map [21][k] = '-';
}

int v = 0;
while (v < 12)
{
v = v + 1;
int n;
int m;
n = rand()%10;
m = rand()%10;
map [n][m] = '0';
}

for (int i = 0; i < 22; i++)
  {
   for (int j = 0; j < 30; j++)
   {
    cout << map[i][j]; // в циклах поэлементно выводится массив
   }
   cout << "\n"; // переход на новую строку после каждого "ряда"
  }
  cout << "Управление - стрелочками, выход - Esc, другой лвл - R.\n";

}
else if (bbb == 27)
{
cout << "Выход";
exit (0);
}
else if (bbb == 75)
{
   system("cls");
   map[y][x] = ' ';
   x = x - 1;
   if (x == -1)
   {
   x = x + 1;
   }
   map [15][10] = 'C';
  afuel = fuel (map, afuel);
    map[y][x] = 'T';  
if (map [yaii][xaii] == 'T')
{
   system("cls");
   cout << "Вы победили";
}
aii();
if (map [y][x] == 'X')
{
   system("cls");
   cout << "Вы проиграли";
}
    for (int i = 0; i < 22; i++)
  {
   for (int j = 0; j < 30; j++)
   {
    cout << map[i][j]; // в циклах поэлементно выводится массив
   }
   cout << "\n"; // переход на новую строку после каждого "ряда"
  }
  cout << "Управление - стрелочками, выход - Esc, другой лвл - R.\n";

}
else if (bbb == 77)
{
   system("cls");
  map[y][x] = ' ';
   x = x + 1;
     if (x == 22)
   {
   x = x - 1;
   }
   map [15][10] = 'C';
   map[y][x] = 'T';
  afuel = fuel (map, afuel);
    map[y][x] = 'T';
if (map [yaii][xaii] == 'T')
{
   system("cls");
   cout << "Вы победили";
}
aii();
if (map [y][x] == 'X')
{
   system("cls");
   cout << "Вы проиграли";
}
  for (int i = 0; i < 22; i++)
  {
   for (int j = 0; j < 30; j++)
   {
    cout << map[i][j]; // в циклах поэлементно выводится массив
   }
   cout << "\n"; // переход на новую строку после каждого "ряда"
  }
     cout << "Управление - стрелочками, выход - Esc, другой лвл - R.\n";
}
else if (bbb == 72)
{
   system("cls");  
  map[y][x] = ' ';
   y = y - 1;
     if (y == -1)
   {
   y = y + 1;
   }
   map [15][10] = 'C';
    map[y][x] = 'T';  
if (map [yaii][xaii] == 'T')
{
   system("cls");
   cout << "Вы победили";
}
aii();
if (map [y][x] == 'X')
{
   system("cls");
   cout << "Вы проиграли";
}
    for (int i = 0; i < 22; i++)
  {
   for (int j = 0; j < 30; j++)
   {
    cout << map[i][j]; // в циклах поэлементно выводится массив
   }
   cout << "\n"; // переход на новую строку после каждого "ряда"
  }
     cout << "Управление - стрелочками, выход - Esc, другой лвл - R.\n";

}
else if (bbb == 80)
{

   system("cls");  
  map[y][x] = ' ';
   y = y++;
       if (y == 21)
   {
   y = y - 1;;
   }
   map [15][10] = 'C';
   map[y][x] = 'T';
  afuel = fuel (map, afuel);
    map[y][x] = 'T';  
if (map [yaii][xaii] == 'T')
{
   system("cls");
   cout << "Вы победили";
}
aii();
if (map [y][x] == 'X')
{
   system("cls");
   cout << "Вы проиграли";
}
    for (int i = 0; i < 22; i++)
  {
   for (int j = 0; j < 30; j++)
   {
    cout << map[i][j]; // в циклах поэлементно выводится массив
   }
   cout << "\n"; // переход на новую строку после каждого "ряда"
  }
     cout << "Управление - стрелочками, выход - Esc, другой лвл - R.\n";
}
else
{
   cout << "Вы нажали неверную клавишу!\n";
}
}

return 0;
}


невелика ссилка для гуглу http://www.school.thv.org.ua
 
auto_ptrДата: Субота, 26.11.2011, 23:05 | Повідомлення # 15
Сержант
Група: Користувачі
Повідомлень: 26
Статус: Offline
« »
Почитав код. В прикладі з OpenGL більшість коментарів треба викинути, вони коментують очевидні речі. Взагалі, коменти мають бути більше про аглоритми чи якісь хитрі місця, якщо вони є, а по-рядкові коменти зайві. Ну і граматичні помилки в коментах якось ріжуть око. Той приклад, що "старий код" - це жах, розібратись нереально, все звалено на купу, позахардкоджував magic numbers, ну просто торба, витри то і не показуй нікому)).
Якщо ти хочеш не лише вирішувати олімп. задачі, а й бути нормальним девелопером і заробляти цим на життя, то я можу тобі дати кілька порад. Перш за все, збийся з С++, паскаля чи асма, по цих мовах мало вакансій, а якщо і є, то там $2000 стеля по ЗП в Франківську, і то ше треба шукати. Крім того, ці мови привчають писати в поганому стилі, пхати в сорси всякі хаки, через які потім купа проблем. Поки ти ще молодий і енергійний, візьми придивись до Ruby, наприклад. Приємна мова, спеців мало (зарплати високі), і на ній можна акуратно, стисло писати складні речі. Є збірка сміття, зрештою, і вказівники під ногами не путаються.
Якщо просто хочеш бути крутим хакером, візьми Common Lisp, але з ним самому розібратись важче. Але якби бажаючих було багато, я би можливо міг прийти і прочитати кілька лекцій, а далі вам було б легше, не знаю. В Франківську страшна криза з кадрами в ІТ, реально нікому нормальні проекти вести, так що на вас, юних і обдарованих, галузь покладає великі надії)). Ну і вам мало б хотітись заробляти гроші, а для цього треба багато вчитись і використовувати час ефективно. Успіхів тобі.
 
Форум » Олімпіади » Турнір юних інформатиків » Що потрібно вміти для олімпіад с інформатики і турнірів?
Сторінка 1 з 3123»
Пошук:
Використання матеріалів дозволяється при посиланні на ftl.org.ua
© FermA 2008 - 2012