Yurii Pisanka
Oferta, która wygrała- Zlecenia 17
- Ocena -
- Ranking 607
Budżet: 300 UAH Termin: 1 dzień
Jeśli masz na myśli konsolę z symbolów 1. Jeśli potrzebne są funkcje S, takie jak printf lub put również uwzględniam.
Budżet: 1000 UAH Termin: 1 dzień
Dzień dobry, przygotowuję program na dziś wieczorem. Napisz do Ls, porozmawiamy o szczegółach.
Oferty ukryte
Aktualnie brak ofert
Budżet: 4000 UAH Termin: 4 dni
Pozdrawiam JuliaZrób swoje zadanie (określone w załączonym w dyskusji obraz) w Visual Studio 2019 (na czystej C, bez użycia C++), opisać programy pseudokodem (w słowach), a także rysować z ręki schematy blokowe,
za 4000 UAH w ciągu 1-2 dni (ale termin odbiera się na 4 dni - z zapasem).Istnieje jeszcze możliwość alternatywnych (niepieniężnych) sposobów wdzięczności, ale to jest już lepiej, aby omówić poza witryną.Jestem FOP (EN, 3 grupa, bez VAT).Akceptuję płatność wyłącznie na rachunek FOP, zgodnie z wystawionymi przez mnie rachunkami-ofertami (można zapłacić za pomocą karty bankowej lub w oddziale dowolnego banku).W tym samym czasie zadania można wykonać za pośrednictwem Witryny z wskazaniem, że płatność jest dokonywana za pośrednictwem Witryny.Może to być przydatne w świetle możliwości pozostawienia wzajemnych opinii.Pokażę wyniki z daleka, a po otrzymaniu pieniędzy od Ciebie, daję Ci je.Daję gwarancję na moją pracę:
Jeśli po otrzymaniu wyniku odkryjesz jakiekolwiek błędy w tym, co zrobiłem, lub nauczyciel poprosi o coś naprawić, to naprawię bezpłatnie (to ryzyko jest wliczone w koszt i motywuje mnie do robienia wszystkiego jakościowo od pierwszego czasu).Więcej szczegółów na temat mnie i interakcji ze mną można przeczytać na mojej stronie: http://hj.net.ua/synergies.html
-
Yekaterina B. 21 maja 2021Использование библиотек допускается? Данные для заполнения таблицы сразу подаются в структуре данных или построчно? Можно пример входных и выходных данных увидеть?
-
Julia Olenichenko
21 maja 2021
ни слова не понимаю, я родственник горе-студента)))
У меня есть задание и лекция, отправляю Вам
-
Yekaterina B. 21 maja 2021Это рисование линиями. Но с входными данными не доконца ясно. Их можно попросить ввести пользователе или же сразу при запуске указать. В целом понятно :).
-
Julia Olenichenko
21 maja 2021
при запуске сразу выходит вид таблички с номерками.
К сдаче нужен код,
псевдокод (словесный)
и блок-схума со словами а не текстом из кода (если большая, то можно по функциям) - схему можно от руки, мы потом перерисовываем в спец программе.
-
Julia Olenichenko
21 maja 2021
ЛЕКЦИЯ 8
Тема: а примере проектирования простой консольной формы ввода логина и пароля рассмотрены особенности составных типов данных: структур и перечислений, а так же основные принципы пошагового проектирования интерактивных программ.
"Хорошая структура программы и плохая структукра данных – плохая программа. Хорошая структура данных и плохая структура программного кода – хорошая программа!"
Новые навыки.
Построение экранных форм (в режиме псевдографики).
Определение и использование структур и перечислений для структуризации данных программного продукта.
Пошаговая разработки программного приложения по технологии "сверху вниз".
На предыдущих практических занятиях были определены требования к учебной интерактивной программе определения логина и пароля пользователя, а так же общая архитектура программного проекта, повторяющая структуру программирования системы Arduino: определение главных подпрограмм setup – начальные установки, и loop – основной интерактивный цикл работы программы.
Функционал приложения определяется так.
Программа должна обеспечивать:
- возможность ввода текстового значения "логина" (буквы латинского алфавита, кириллицы и цифры) с отображением вводимого текста на экране и возможностью его редактирования;
- возможность ввода текстового значения "пароля" (буквы латинского алфавита, кириллицы и цифры) с отображением условных символов вместо вводимых символов текста и возможностью его редактирования;
- очистку полей ввода логина и пароля;
- переход "вперед-назад" между полями ввода.
Напомним общую структуру модулей разрабатываемого приложения (проекта):
<!--[if !vml]-->
Здесь модуль codec необходим для поддержки перекодировок ср1251 и ср866 системы Windows.
Начальный код модуля myprograms.c
#include "myprograms.h"
void setup(){
} // setup
void loop(){
} // loop
Общая концепция структуры системы может быть изображена в виде диаграммы деятельности:
<!--[if !vml]-->
Первый шаг разработки. Построение экранной формы.
Подпрограмма, реализующая построение этой формы – setPanel.
Определяем "болванку" данной подпрограммы и включаем ее ф подпрограмму setup.
void setPanel();
void setup(){
setPanel();
} // setup
void setPanel(){
} // setup
Сразу заметим, что строить заданную экранную форму одной подпрограммой в корне неверно!
Почему?
Внимательно рассмотрим эскиз требуемой формы:
<!--[if !vml]-->
Видно, что основной графический элемент формы – прямоугольник: окантока формы, выделение полей ввода, определение поля сброса данных.
Таким образом, подпрограмма построения прямоугольника – необходимый элемент подпрограммы построения формы.
Какие параметры (в данном случае), изменяются при построении конкретных прямоугольников формы? Точка "привязки" (координаты левого верхнего угла прямоугольника), ширина и высота. Напоминаем, что при использовании псевдографики все координаты определяются в "знакоместах" и начальное значение координат – единица!
Теперь можно определить подпрограмму построения прямоугольника:
void ramka( int x, int y, int w, int h, int dubL=0 ){
gotoxy( x, y );
uchar vl, vp, nl, np, gor, vert;
if ( dubL ){
vl=201; vp=187; nl=200; np=188; gor=205; vert=186;
} else {
vl=218; vp=191; nl=192; np=217; gor=196; vert=179;
}
putch( vl );
for ( int i=0; i<( w-1 ); i++ ) putch( gor );
putch( vp );
// niz
gotoxy( x, y+h );
putch( nl );
for ( int i=0; i<( w-1 ); i++ ) putch( gor );
putch( np );
for ( int i=1; i<h; i++ ) {
// levo
gotoxy( x, y+i ); putch( vert );
// pravo
gotoxy( x+w, y+i ); putch( vert );
}
} // ramka
Обратите внимание на еще один параметр – dubL. Он определяет, какой линией будет произведена прорисовка прямоугольника: одинарной или двойной.
Теперь можно, используя для перекодировки текстовых данных подпрограмму cp866cp1251, сформировать подпрограмму построения экранной формы – setPanel:
void setPanel(){
char s[50];
textbackground( BLUE );
textcolor( WHITE );
clrscr();
ramka( 1, 1, PANEL_W, PANEL_H, 1 );
ramka( 10, 3, 19, 5 );
ramka( 10, 9, 19, 5 );
gotoxy( 3, 5 );
puts( cp866cp1251( s, "ЛОГИН" ) );
gotoxy( 3, 11 );
puts( cp866cp1251( s, "ПАРОЛЬ" ) );
ramka( PANEL_W/2-5, 16, 11, 4 );
gotoxy( PANEL_W/2-3, 18 );
puts( cp866cp1251( s, "ОБНОВИТЬ" ) );
} // setPanel
Выделенным шрифтом отмечены выражения, определяющие иные (не "по умолчанию") цвета прорисовки: цвет фона и цвет текста. В данном случае – белый текст по голубому фону.
Использование структур для объединения "связанных" между собой данных. Например – цвет фона и цвет текста.
А что делать, если понадобиться сменить параметры цветовой палитры? Напрашивает решение: добавить два параметра процедуры: цвет фона и цвет текста.
На наш взгляд – это не лучшее решение: эти два параметра "связаны" друг с другом, представляют комбинацию этих величин.
В системе С, как в большинстве других языков программирования, для этих целей служат специальные конструкции: составные типы данных – структуры.
В данном случае определим структуру, позволяющую задать комбинацию параметров: "цвет поля"-"цвет шрифта".
typedef struct Colors_panel {
int textColor, backgroundColor;
} TColors_panel;
Примечание. Структура – это определяемый программистом набор байтов, элементы которого (точнее – их адреса в памяти) могут быть определены с помощью "внутренних" имен этой структуры. Формальное определения структур и приемы работы с ними выучите по предлагаемым учебникам. Здесь мы приводим практику их применения. Отметим, что определение структуры с помощью выражения typedef позволяет более "компактно" в дальнейшем записывать определения, включающие этот тип данных.
Обратите внимание на размер структуры (сумма размеров составляющих ее элементов) и на возможность присваивания значения:
typedef struct panel {
int textColor, backgroundColor;
} Tpanel;
Tpanel p1={10, 20}, p2={40, 50};
int main(){
printf( "size TColors_panel=%d\n", sizeof( Tpanel ) );
printf( "textColor=%d backgroundColor=%d\n",
p1.textColor, p1.backgroundColor );
p1 = p2;
printf( "textColor=%d backgroundColor=%d\n",
p1.textColor, p1.backgroundColor );
return 0;
} // main
<!--[if !vml]-->
Таким образом, мы имеем возможность работать как с отдельными элементами (составляющими) структуры, так со структурой в целом.
Теперь мы можем "предопределить" два вида цветовой гаммы нашего оконного приложения:
typedef struct Colors_panel {
int textColor, backgroundColor;
} TColors_panel;
Начальное присваивание можно реализоват так:
static TColors_panel wbPanel = { WHITE, BLACK };
static TColors_panel wblPanel = { WHITE, BLUE };
или так:
static TColors_panel wbPanel = { .textColor=WHITE, .backgroundColor=BLACK };
static TColors_panel wblPanel = { .textColor=WHITE, .backgroundColor=BLUE };
А новое определение подпрограммы прорисовки экранной формы приолжения буде выглядеть:
void setPanel( TColors_panel cp = wbPanel ){
char s[50];
textbackground( cp.backgroundColor );
textcolor( cp.textColor );
clrscr();
ramka( 1, 1, PANEL_W, PANEL_H, 1 );
ramka( 10, 3, 19, 5 );
ramka( 10, 9, 19, 5 );
gotoxy( 3, 5 );
puts( cp866cp1251( s, "ЛОГИН" ) );
gotoxy( 3, 11 );
puts( cp866cp1251( s, "ПАРОЛЬ" ) );
ramka( PANEL_W/2-5, 16, 11, 4 );
gotoxy( PANEL_W/2-3, 18 );
puts( cp866cp1251( s, "ОБНОВИТЬ" ) );
} // setPanel
Теперь варианты вызова этой полпрограммы:
void setup(){
//setPanel(); // черно-белая панель
setPanel( wblPanel ); // голубая-белая панель
} // setup
Результат обоих вызовов:
<!--[if !vml]--><!--[endif]--> <!--[if !vml]-->
Второй шаг разработки. Построение интерактивного функционала приложения.
Напомним основные элементы функционала:
- ввод и редактирование текстовых данных в поля логина и пароля, причем во втором случае, с заменой изображения вводимых символов на замещающие их условные символы;
- переход по нажатию определенных клавиш между полями ввода;
- возможность очистки полей ввода по требованию пользователя (нажатие клавиши "ВВОД") при нахождении курсора в поле "ОБНОВИТЬ".
Прежде всего отметим, что использование для наших целей (ввод и редактирование текста) стандартных средств С невозможно: ввод продолжается, пока "жмется клава".
Например – ввод логина с помощью gets (fgets) scanf.
void setup(){
setPanel();
//setPanel( wblPanel );
} // setup
void loop(){
uchar s[50];
gotoxy( 12, 5 );
fgets( s, 15, stdin );
gotoxy( 1, PANEL_H+6 );
puts( s );
} // loop
<!--[if !vml]-->
Таким образом, необходимо разработать специальную программу ввода редактирования текста в интерактивном режиме.
Общая структура подпрограммы (интерактивного цикла работы приложения) может быть представлена в виде следующей диаграммы деятельности:
<!--[if !vml]-->
Как мы видели на предыдущих примерах работы с подпрограммами консольного ввода-вывода ряд клавиш при нажатии вырабатываю "двойной" код – функция getch должна вызываться дважды.
Поскольку в нашей программе необходимо будет использовать специальные клавиши управления вводом (перемещения по вводимому тексту, забой символов, переход от заполнения одной формы к другой) всякий раз анализировать непосредственно эти коды неудобно.
В подобных случаях данные (в данном случае – коды клавиш) разбиваются на классы (подклассы), корорым присваиваются числовые индексы и дальнейшая работа производится исходя из индекса соответствующего класса символа и его (символа) кода.
Например: класс "навигации", класс "печатного символа" и т.п.
В С удобно использовать еще один тип данных языка С – перечисления.
Общая форма определения перечислений:
enum [identifier] { enumerator-list };
Примеры.
Вообще перечисления можно представить как задание некоторых поименованных констант.
enum color { black, red, green, yellow, blue, white=7, gray };
enum { OFF, ON } toggle = ON;
enum { OFF, ON, STOP = 0, GO = 1, CLOSED = 0, OPEN = 1 };
Теперь можно определить "классы" кодов клавиш (точнее – условные наименования типов клавиш – команд) и создать функцию, которая будет обрабатывать "нажатие" клавиш, вырабатывая код типа клавиши и, при необходимости , ее значение. ....
Определим типы клавиш (заметте – независимо от количестваа водимых символов на нажатие клавиши!):
M_ESC – закончить работу (27);
M_LEVO – сдвиг влево по тексту вводимой строки (224, 75);
M_PRAVO – сдвиг влево по тексту вводимой строки (224, 77);
M_DELETE – удалить текущий символ (224, 83);
M_BASCSP – удалить предыдущий символ (8);
M_TOP – переход на предыдущее поле (Ctrl-tab – 0, 148);
M_DOWN – переход на следующее поле (tab – 9);
M_CLEAR – нажатие ENTER (13 – для очистки полей ввода );
M_CHAR – печатный символ (ср866: 48-57, 65-122, 128-175, 224-245(239))
enum typeKlavr { M_ESC, M_LEVO, M_PRAVO, M_DELETE, M_BASCSP,
M_TOP, M_DOWN, M_CLEAR, M_CHAR };
Примечание. "Жирным" текстом выделены типы клавиш (команд), необходимых для "полноценного" редактирования вводимых полей. В нашем случае при разработке строкового редактора ввода ограничимся упрощенным редактором, позволяющим изменять (стирать) только последний символ в строке.
Теперь подпрограмма (функция) ввода с клавиатуры должна вырабатывать "класс" клавиши" и, для "допустимых" печатных символов, их код.
Как мы уже делали это ранее, связанные логически данные удобно представить в виде структуры. Например – такой:
typedef enum typeKlav { M_ESC, M_LEVO, M_PRAVO, M_DELETE, M_BASCSP,
M_TOP, M_DOWN, M_CLEAR, M_CHAR } TtypeKlav;
//typedef struct KodKav { enum typeKlav klav; uchar ch; } TkodKlav;
typedef struct KodKav { TtypeKlav klav; uchar ch; } TkodKlav;
//TkodKlav ku = { M_ESC, 27 }; // пример данных
Тут специально представлен вариант (выделено цветом) определения TkodKlav без использования конструкции typedef для определения перечисления типов клавиш.
Теперь определение подпрограммы ввода можно представить так:
TkodKlav getKlav();
А ее реализация:
TkodKlav getKlav(){
TkodKlav rez;
uchar c[2];
int n, k;
while ( !kbhit() ); // ожидание нажатия клавиши
n = 0;
while ( 1 ) {
while ( kbhit() ){
k = getch();
c[ n++ ] = k;
}
if ( n==1 ){
switch( c[0] ){
case 27 : rez.klav = M_ESC; return rez;
case 8 : rez.klav = M_BASCSP; return rez;
case 9 : rez.klav = M_DOWN; return rez;
case 13 : rez.klav = M_CLEAR; return rez;
default :
if ( isMyAlpha( c[0] )) {
rez.klav=M_CHAR; rez.ch=c[0]; return rez;
}
} // switch
} else {
if ( c[0]==224 ){
switch( c[1]){
case 75 : rez.klav = M_LEVO; return rez;
case 77 : rez.klav = M_PRAVO; return rez;
case 83 : rez.klav = M_DELETE; return rez;
}
} else if ( c[0]==0 && c[1]==148 )
rez.klav = M_TOP; return rez;
}
} // while
return rez;
} // TkodKlav
Задание: самостоятельно изобразите диаграмму деятельности этой подпрограммы.
Построим теперь подпрограммы редактирования поля ввода.
Опять главный вопрос: представление параметров ввода, с которыми работает подпрограмма редактирования.
Как говорилось ранее: если у нас есть хотя бы два похожих фрагмента – их необходимо объединить в одну подпрограмму!
Однако такая подпрограмма, почти наверняка, должна будет работать в различных условиях. Иначе – в разном контекстном окружении.
В данном случае это и положение на экране отображаемых при вводе символов и различная реакция на вводимые символы: при вводе логина – отображение (вывод) символов, а при вводе пароля – вывод условных обозначений.
Поэтому перед разработкой подпрограммы определим структуру "контекста".
Например, в данном случае, это может быть такая структура:
typedef struct KodKav { TtypeKlav klav; uchar ch; } TkodKlav;
typedef struct PoleVvoda { uchar posX, posY, s[20], maxLen,
curLen, posInStr, kodZameny; } TPoleVvoda;
У нас два поля ввода: логина и пароля.
Определим их контексты:
TPoleVvoda login={ .posX=12, .posY=5, .s="", .maxLen=15,
.curLen=0, .posInStr=0, .kodZameny=0 },
parol={ .posX=12, .posY=11, .s="", .maxLen=15,
.curLen=0, .posInStr=0, .kodZameny=249 };
Теперь подпрограммы работы с этими контекстами (не только редактирование, но и сброс – начальная установка контекста, установка позиции ввода – курсора) могут быть определены следующим образом:
void ustPos( TPoleVvoda * pole );
void sbrosPola( TPoleVvoda * pole );
void redPola( TPoleVvoda * pole, TkodKlav kod );
Построим их "болванки" и приступим к реализации главной части программы – подпрограммы loop.
Именно на основе постепенного подключения функционала к этой подпрограмме мы и будем отлаживать всю программную систему:
- получение данных клавиатуры и выход из подпрограммы;
- переход между полями ввода:
- ввод и редактирование данных.
void loop(){
uchar s[50], sost = 0;
TkodKlav kod;
gotoxy( 12, 5 ); // ??????
while( 1 ){
kod = getKlav();
if ( kod.klav==M_ESC ) break;
switch ( sost ){
case 0 : // vvod logina
if ( kod.klav==M_DOWN ) {
ustPos( &parol );
sost=1;
} else redPola( &login, kod );
break;
case 1 : // vvod parola
if ( kod.klav==M_DOWN ) {
gotoxy( 12, 18 );
sost=2;
} else if ( kod.klav==M_TOP ){
ustPos( &login );
sost=0;
} else redPola( &parol, kod );
break;
case 2 : // ogidanie sbrosa
if ( kod.klav==M_TOP ) {
ustPos( &parol );
sost=1;
} else if ( kod.klav==M_CLEAR ) {
sbrosPola( &login );
sbrosPola( &parol );
ustPos( &login );
sost=0;
}
break;
} // switch sost
}
gotoxy( 1, PANEL_H+4 );
login.s[ login.curLen ] = 0;
parol.s[ parol.curLen ] = 0;
puts( login.s );
puts( parol.s );
gotoxy( 1, PANEL_H+8 );
} // loop
Реализация подпрограмм работы к контекстом ввода данных:
void sbrosPola( TPoleVvoda * pole ){
// parol={ .posX=12, .posY=11, .s="", .maxLen=15, .posInStr=0, .curLen=0, .kodZameny=249 };
gotoxy( pole->posX, pole->posY );
while ( pole->curLen ){
putch( ' ' );
pole->curLen--;
}
pole->s[0] = 0; //pole->curLen=0;
pole->posInStr = 0;
} // sbrosPola
void ustPos( TPoleVvoda * pole ){
gotoxy( pole->posX+pole->curLen, pole->posY );
pole->posInStr = pole->curLen;
} // ustPos
void redPola( TPoleVvoda * pole, TkodKlav kod ){
switch( kod.klav ){
case M_LEVO :
break;
case M_PRAVO :
break;
case M_DELETE :
break;
case M_BASCSP :
if ( pole->curLen ){
pole->curLen--;
gotoxy( pole->posX+pole->curLen, pole->posY );
putch( ' ' );
gotoxy( pole->posX+pole->curLen, pole->posY );
}
break;
case M_CHAR :
if ( pole->curLen < pole->maxLen ){
pole->s[ pole->curLen++ ] = kod.ch;
if ( pole->kodZameny ) putch( pole->kodZameny );
else putch( kod.ch );
}
}
} // redPola
-
Julia Olenichenko
21 maja 2021
2.1. Написать программу:
2.1.1. Сформировать массив (установкой начальных значений) и вывести его изображение. Выход из подпрограммы по нажатию клавиши ESC
2.1.2. Написать подпрограмму, формирующую следующее изображение
Выход из подпрограммы по нажатию клавиши ESC
я так понимаю, что при запуске сразу выходит вид таблички с номерками.
К сдаче нужен:
код,
псевдокод (словесный)
и блок-схума со словами а не текстом из кода (если большая, то можно по функциям) - схему можно от руки, мы потом перерисовываем в спец программе.
Aktualne zlecenia dla freelancerów w kategorii C i C++
Wymagana jest разработка łatki do sterownika karty graficznej, rozszerzającej możliwości zarządzania adapterem graficznym poprzez dodanie dodatkowych ustawień użytkownika. Łatka powinna integrować się z istniejącą architekturą sterownika bez naruszania jego podstawowej funkcjonalności i zapewniać zgodność z obsługiwanymi wersjami systemu operacyjnego. Głównym celem jest zapewnienie bardziej elastycznego dostępu do parametrów, które są niedostępne w standardowej panelu sterowania, z możliwością ich zmiany przez interfejs użytkownika lub programowe API. Łatka powinna przewidywać modułową strukturę, umożliwiającą w przyszłości dodawanie nowych parametrów bez istotnej przeróbki kodu. Należy zapewnić poprawne przetwarzanie błędów, rejestrowanie zmian, możliwość przywrócenia ustawień do wartości domyślnych, a także zachowanie zgodności z przyszłymi aktualizacjami sterownika, o ile to możliwe. Rozwiązanie powinno być dostarczone z dokumentacją techniczną opisującą architekturę, zrealizowane możliwości, ograniczenia oraz zalecenia dotyczące testowania.
Jesteśmy dużą firmą logistyczną, która ma własny eksport. Dysponujemy dużym parkiem samochodowym i nieustannie wysyłamy nasze pojazdy na eksport do krajów Europy.Opis Strona: https://echerha.gov.ua/ Na tej stronie umieszczamy nasze samochody w elektronicznej kolejce do przekroczenia granicy państwowej. Podczas rejestracji należy wprowadzić następujące dane: imię i nazwisko kierowcy; numer paszportu zagranicznego; adres e-mail; numer telefonu logisty do otrzymywania powiadomień; typ pojazdu (ciężarowy); nazwa producenta samochodu; numer rejestracyjny ciągnika; numer rejestracyjny przyczepy; numer deklaracji celnej. Dla każdego samochodu z góry określono konkretny dzień i godzinę przekroczenia granicy. Na przykład, samochód musi przejść przez punkt kontrolny „Rawa-Ruska” w poniedziałek o 10:00.Nasz problem - Kolejka na stronie https://echerha.gov.ua/ porusza się nieprzewidywalnie. - Na przykład, dzisiaj jest piątek, a samochód musi przekroczyć granicę w poniedziałek o 10:00. - Nie wiemy, kiedy dokładnie kolejka zacznie się posuwać. Może to nastąpić w piątek wieczorem, w dowolnym momencie w sobotę lub niedzielę, wcześnie rano, w ciągu dnia lub późno wieczorem. - Kiedy kolejka zaczyna się poruszać, jest to od razu widoczne na stronie. Czasami w ciągu zaledwie kilku minut może przesunąć się z piątku na poniedziałek lub nawet na wtorek. - Z tego powodu logistycy muszą nieustannie kontrolować aplikację mobilną lub stronę internetową, aby nie przegapić momentu, gdy kolejka dojdzie do potrzebnej daty i godziny. Jeśli ten moment zostanie utracony, fizycznie nie zdążamy umieścić samochodu w kolejce na odpowiedni slot czasowy.Zadanie - Po wprowadzeniu danych o samochodzie (na przykład do tabeli lub innego interfejsu, w zależności od realizacji programisty) system powinien automatycznie śledzić ruch kolejki. - Kiedy kolejka dojdzie do wcześniej określonej daty i godziny, system powinien automatycznie wypełnić wymagane dane i umieścić samochód w kolejce bez udziału logisty.
Szukam doświadczonego programisty TrinityCore 3.3.5a, który dobrze zna się na strukturze jądra, systemie Battleground, C++, SQL i kliencie WoW 3.3.5. W projekcie zintegrowano już niestandardowy Battleground „Dolina Niewolnictwa” (Slavery Valley), przeniesiony z AzerothCore na TrinityCore. Główna część pracy została już wykonana, jednak wymaga doprowadzenia do poziomu Blizzard.Co już zrobiono TrinityCore 3.3.5a + Eluna. Serwer w pełni skonfigurowany. Battleground zintegrowany z jądrem. Działa wejście do BG. Działa interfejs klienta (częściowo). Przeniesiono większość SQL i DBC. Buduje się bez błędów.Co należy zrobić Naprawić pozostałe błędy Battleground. Doprowadzić mechanikę do poziomu oficjalnych Battleground Blizzard. Naprawić fazę startową meczu. Wdrożyć poprawne bramy startowe/ściany ognia. Naprawić mechanikę przejmowania punktów. Naprawić zakończenie meczu. Sprawdzić przyznawanie punktów i działanie WorldState. Naprawić pozostałe problemy C++ i SQL. Przeprowadzić pełne testy gry.Wymagania Obowiązkowe doświadczenie: TrinityCore 3.3.5a; C++; SQL (MariaDB/MySQL); DBC; MPQ; Visual Studio; CMake; Git. Dużym plusem będzie: AzerothCore; Eluna; doświadczenie w tworzeniu Battleground; znajomość części klienckiej WoW 3.3.5a.Format pracy Praca etapowa. Po każdym etapie obowiązkowe testowanie. Każdy etap akceptowany tylko po weryfikacji w grze. Potrzebne są zrozumiałe raporty dotyczące zmian.W przyszłości To długoterminowy projekt. Po zakończeniu Battleground planowane jest: przeniesienie nowych Battleground; przeniesienie nowych aren; nowe rasy; nowe klasy; nowe systemy gry; dalszy rozwój własnego serwera World of Warcraft 3.3.5a. Szukam programisty, który już pracował z TrinityCore i będzie w stanie nie tylko pisać kod, ale doprowadzić system do w pełni działającego stanu.nie serwer z 0 jak chcę Jeśli szukasz programisty nie tylko na jeden Battleground, ale na stworzenie serwera od podstaw, to ogłoszenie powinno wyglądać mniej więcej tak.Nazwa projektu Rozwój serwera World of Warcraft 3.3.5a od podstaw (TrinityCore / C++ / SQL / Eluna)Opis projektu Szukam doświadczonego programisty TrinityCore 3.3.5a do długoterminowej współpracy. Potrzebuję osoby, która będzie w stanie od podstaw stworzyć w pełni gotowy serwer gry World of Warcraft 3.3.5a na bazie TrinityCore z dalszym rozwojem projektu. Projekt jest duży i przewidziany na kilka miesięcy rozwoju.Podstawa projektu TrinityCore 3.3.5a. Jak najbardziej stabilna i zbliżona do Blizzard baza. Eluna Lua Engine. MariaDB. Visual Studio + CMake. Git.Co planuje się zrealizować W pełni działający serwer 3.3.5a. Naprawa błędów jądra. Rozwój nowych systemów gry. Integracja niestandardowych Battleground. Integracja nowych aren. Przeniesienie użytecznych modułów z AzerothCore na TrinityCore. Rozwój własnych modułów. Nowe systemy PvP i PvE. Nowe wydarzenia w grze. Balansowanie klas. Dodatkowe systemy progresji. Poprawa wydajności serwera.W przyszłości Po zakończeniu podstawowej części planowane jest: nowe rasy; nowe klasy; nowe strefy; nowe lochy; nowe rajdy; nowe Battleground; nowe profesje; nowe mechaniki gry; integracja nowoczesnych systemów w kliencie 3.3.5a.Wymagania dla programisty Obowiązkowe: Doskonała znajomość TrinityCore 3.3.5a. Pewna znajomość C++. SQL (MariaDB/MySQL). Git. Visual Studio. CMake. Znajomość architektury TrinityCore. Doświadczenie w pracy z Battleground, PvP i mechanikami gry. Dużym plusem będzie: Doświadczenie w pracy z AzerothCore. Eluna Lua Engine. Praca z DBC i MPQ. Doświadczenie w tworzeniu własnych systemów gry.Format pracy Praca etapowa. Każde zadanie jest dokumentowane jako osobne zadanie techniczne. Po każdym etapie przeprowadzane są obowiązkowe testy. Praca akceptowana tylko po weryfikacji bezpośrednio w grze. Potrzebny jest programista, który potrafi doprowadzić funkcjonalność do w pełni działającego stanu, a nie tylko pisać kod.
Bezzałogowy statek powietrzny typu samolotowego
Stworzyć kompatybilność między naziemną stacją zarządzania, systemem automatycznego startu (SAS), radarem a samolotem.
это задание