Результаты поиска
| |
afq | Дата: Вторник, 18 Июня 2019, 10:08 | Сообщение # 501 | Тема: Уроки по программированию по си и c++ |
Разработчик
Сейчас нет на сайте
| Xakep, но это я из си узнал. Вот ещё пример, это уже из сетевого программирования.
Код struct sockaddr client; socklen_t len = sizeof ( struct sockaddr ); accept ( sock, &client, &len ); int port = htons ( ( ( struct sockaddr_in * ) client )->sin_port );
Так можно узнать какой порт у клиента, приведя его к структуре sockaddr_in. Но проще в этот случае сразу использовать sockaddr_in.
Код struct sockaddr_in client; socklen_t len = sizeof ( struct sockaddr_in ); accept ( sock,(struct sockaddr *) &client, &len ); int port = htons ( client->sin_port );
Просто структуру sockaddr обычно требуют функции для сетевого программирования,а для удобства использования данные есть структура sockaddr_in, которая уже имеет нужные данные из sockaddr. Эти единственные структуры, что я знаю, которые делают такие вот выкрутасы с данными.
|
|
| |
afq | Дата: Вторник, 18 Июня 2019, 06:26 | Сообщение # 502 | Тема: Уроки по программированию по си и c++ |
Разработчик
Сейчас нет на сайте
| Цитата Ну тут нет никакой магии, только костыли  не стоит так никогда делать. Xakep, как это не стоит. Это очень удобно, и это не костыль. Ситуации бывают разные. Именно поэтому я с тобой не соглашусь. Смотри пример.
Код #include <stdio.h> #include <stdlib.h>
struct head { int number; };
struct data { char d[255]; };
struct auth { char login[32]; char password[32]; }; static void fill ( char *data ) { data[0] = (char) 1; } #define AUTH 1 #define DATA 2 struct data *data; struct auth *auth; int main ( ) { char *buffer = calloc ( 255, 1 ); fill ( buffer );
switch ( ( ( struct head * ) buffer )->number ) { case AUTH: auth = ( struct auth * ) &buffer[0]; return 0; case DATA: data = ( struct data * ) &buffer[0]; return 0; } }
Это гораздо удобнее, чем делать так.
Код struct head *head = ( struct head * ) &buffer[0]; int number = head->number; switch ( number ) {
И с чего это вдруг твои советы должны быть правильными? С чего ты вообще взял что приводить к типу не стоит?
|
|
| |
afq | Дата: Суббота, 15 Июня 2019, 13:09 | Сообщение # 503 | Тема: как написать большую игру на C++ & SFML (не 3d) |
Разработчик
Сейчас нет на сайте
| zaicev9797, фиг знает как они реализовали свои движки. Но они сложные. Например в unreal трудно будет найти скорее всего что ты хочешь, а может и нет. Ну вот например физика. В цикле есть метод update ( ), в нем ты логику задаешь, что объект будет делать при смене времени. А есть функция, которую не надо менять. Она запускается перед update, в ней проверяется, если объект добавлен к физическому движку, то выполнить действие. В box2d надо же объект вроде добавить в класс определённый. Например класс физического движка такой, он с глобальной областью видимости.
Код void set_physix ( true ) { Box2d.add ( this ); }
И всё, перед update выплняется функция, в которой Box2d обновляет позиции объектов. А потом update, где ты передвигаешься.
|
|
| |
afq | Дата: Суббота, 15 Июня 2019, 12:53 | Сообщение # 504 | Тема: Массив содержащий компоненты игрового обьекта |
Разработчик
Сейчас нет на сайте
| zaicev9797, а ты на c++ это делал, я думал что ты на c# на unity делаешь. Тот метод, который я написал, он медленный, потому что ассоциативный массив. Лучше создавать все свойства и методы. Сделай основной объект с виртуальными функциями. Наследуй каждый объект от этого объекта. А дальше думай ещё что нибудь.
Добавлено (15 Июня 2019, 13:19) --------------------------------------------- Всё, теперь можно создавать объекты, только в main.
Код #pragma once #include <map> #include <string> #include <iostream> #include "mem.h" #include "base.h" #include "two.h"
class Object { public: Object ( ) { map[typeid( Mem ).name() ]; map[typeid( Two ).name() ]; } void set_attr ( Base *b, int i ) { map [ typeid( *b->get()).name() ] = b->get(); Base *base = b->get(); base->set ( i ); } int get_attr ( Base *b ) { return map[typeid(*b->get()).name()]->get_int(); } protected: private: std::map<std::string, Base*> map;
};
Сообщение отредактировал afq - Суббота, 15 Июня 2019, 13:20 |
|
| |
afq | Дата: Суббота, 15 Июня 2019, 09:20 | Сообщение # 505 | Тема: Массив содержащий компоненты игрового обьекта |
Разработчик
Сейчас нет на сайте
| Цитата если к тебе подойдет ребенок с игрушечным бульдозером и совочком для песка, и скажет что хочет построить 100-этажный небоскреб, ты ему начнешь обьяснить как это сделать или отправишь обратно в детский садик? Хахаха zaicev9797, я тут набрасал код на c++. Не знаю, поможет ли он тебе чем нибудь. Но мне стала интересна твоя задачка. Я исходил из того что вроде все объекты в unity исходят из gameobject. Вот как я реализовал это.
Код #pragma once #include "mem.h" #include "base.h" #include "two.h"
class Object { public: Object ( ) { mem = nullptr; } void set_attr ( Base *b, int i ) { Base *base = b->get(); base->set ( i ); } int get_attr ( Base *b ) { return b->get_int(); } protected: private: Mem *mem; Two *two;
};
Видишь я сделал один set_attr, и он в зависимости от типа присваивает переменные либо mem, либо two. В main это выглядит вот так.
Код #include <stdio.h> #include "object.h" #include "mem.h" #include "base.h" #include "two.h"
int main ( ) { Object *obj = new Object ( ); Mem *mem = new Mem ( ); Two *two = new Two ( );
obj->set_attr ( mem, 4 ); obj->set_attr ( two, 8 );
printf ( "1: %d\n", obj->get_attr ( mem ) ); printf ( "2: %d\n", obj->get_attr ( two ) ); }
Первый выведет 4, потому что для mem я так записал, а второй выведет 8. Вообще это работает, если типы каждого вида есть в единственном экземпляре. Может мой код и далёк от совершенства, но это первое что мне пришло в голову. Вот остальной код.
Код #pragma once
class Base { public: Base ( ) { } virtual void set ( int i ) = 0; virtual Base *get ( ) = 0; virtual int get_int ( ) = 0; private: protected: };
Здесь я использовал виртуальные функции, чтобы в произовдном классе использовать их. Из-за того, что в base определены эти виртуальные методы, а в производном их решение, я могу делать так.
Код void set ( Base &m ) { printf ( "%d\n", m.get_int ( ) ); } Mem mem; set ( mem );
И вызовется код именно mem а не base. Ну код get_int ( ). Ладно это был пример, если ты не знаешь как использовать виртуальные функции. Теперь далее.
Код #pragma once #include "base.h"
class Mem : public Base { public: Mem ( ) { } void set ( int i ) { this->i = i; } Mem *get ( ) { Mem *m = this; return m; } int get_int ( ) { return i; } private: int i; protected: };
Здесь я переопределяю вызов get, чтобы он возвращал тот тип, который надо.
Код #pragma once #include "base.h"
class Two : public Base { public: Two ( ) { } void set ( int i ) { this->i = i; } Two *get ( ) { Two *m = this; return m; } int get_int ( ) { return i; } protected: private: int i; };
Здесь тоже переопределяю метод get.
Надеюсь тебе понятно. Мне понравилось моё решение, надеюсь и тебе тоже. Попробуй реализовать это в unity, Тогда не придётся писать для каждого атрибута setter и getter.Добавлено (15 Июня 2019, 09:51) --------------------------------------------- АААА БЛИН, я какую то фигню написал, я же не присвоил атрибутам object значения. ааааа. Добавлено (15 Июня 2019, 10:02) --------------------------------------------- zaicev9797, в android studio например для каждого свойства класса можно с помощью команды задать геттеры и сеттеры. Может и в твоей ide можно такое сделать? Добавлено (15 Июня 2019, 10:41) --------------------------------------------- zaicev9797 всё, я смог реализовать это на c++, только пока вот так.
Код #pragma once #include <map> #include <string> #include <iostream> #include "mem.h" #include "base.h" #include "two.h"
class Object { public: Object ( ) { map[typeid( Mem ).name() ] = new Mem ( ); map[typeid( Two ).name() ] = new Two ( ); } void set_attr ( Base *b, int i ) { Base *base = map [ typeid( *b->get()).name() ]; base->set ( i ); } int get_attr ( Base *b ) { return map[typeid(*b->get()).name()]->get_int(); } protected: private: std::map<std::string, Base*> map;
};
Это изменения в коде. То есть тебе свойства так и так придётся создать. Их я занёс в map. С помощью typeid я узнаю имя класса. Далее в main вот так.
Код #include <stdio.h> #include "object.h" #include "mem.h" #include "base.h" #include "two.h"
int main ( ) { Object *obj = new Object ( ); Mem *mem = new Mem(); Two *two = new Two();
obj->set_attr ( mem, 4 ); obj->set_attr ( two, 8 );
printf ( "1: %d\n", obj->get_attr ( mem ) ); printf ( "2: %d\n", obj->get_attr ( two ) ); printf ( "3: %d\n", obj->get_attr ( mem ) ); }
По другому я не смог сделать, то есть надо и здесь и здесь создавать объекты. Но в твоём случае там надо получить ссылку типа такого вроде GetComponent<typename>(). Чтобы получить имя класса, указателя не достаточно, надо проверять целый класс.Добавлено (15 Июня 2019, 10:43) --------------------------------------------- Думаю в c# тоже можно узнать имя класса.
|
|
| |
afq | Дата: Пятница, 14 Июня 2019, 04:00 | Сообщение # 506 | Тема: Дешевый SSD хостинг на DDR4 с DDOS защитой для 10 сайтов |
Разработчик
Сейчас нет на сайте
| HostiMan, а я могу не сайты, а например консольные утилиты сетевые использовать? У вас есть доступ к консоли? Ну например в том, который за 300 рублей?
|
|
| |
afq | Дата: Четверг, 13 Июня 2019, 20:53 | Сообщение # 507 | Тема: Pascal u ncurses |
Разработчик
Сейчас нет на сайте
| Цитата По Си стОящей литературы фактически еще меньше, чем по Паскалю.
camac, ну это если в инете скачивать, да и то можно догодаться как правильно писать, вы же догадались. Я например по этой книге учился, по кернигану ритчи. Ну ещё я вот по этой книге учился. http://padabum.com/d.php?id=202686Добавлено (13 Июня 2019, 20:54) --------------------------------------------- Эта книга, которую ссылку я привёл, там всё нормально с текстом и интересно всё пишут. Это была моя первая книга по си, которую я прочитал всю. Добавлено (14 Июня 2019, 00:03) --------------------------------------------- camac, на си например можно делать утилиты, которые упрощают работу. Но заработать на си сложно. Потому что помимо языка нужны ещё знания. Но если утилиты для себя делать, то си вполне хватит. Меня не раз спасал си, когда нужно было программу написать, чтобы она нужным способом сделала что надо. Но чтобы заработать деньги, надо ещё что-то знать. Я например пытаюсь освоить веб разработку. Будет классно если у меня получиться. Java хоть и знаю язык и в линуксе есть openjdk, то компании вроде используют oracle-jvm. Блин java классный язык вроде, даже на игрушечный похож. Но книги для java очень дорогие, и технологий надо много знать, чтобы писать, а я пока английский ещё учу, не смогу в документации нарыть нужную информацию. Поэтому выбор пал на php. Есть вакансии, где можно устроиться удаленно разработчиком. Это вообще супер. Проснулся, попил кофе, сел за свой компьютер и работаешь. Захотел, прилёг полежал. Да и без образования берут на работу, это вообще супер. Если я справлюсь, то до пенсии, а может и на пенсии, я обеспечю себя заработком. Правда я не знаю что такое работать программистом каждый день. Ну посмотрим. Добавлено (14 Июня 2019, 01:35) --------------------------------------------- Блин, что-то не получается у меня учить этот php. Я думаю что лучше прокачивать свои знания в си программировании. И продолжать делать задачи, которые для меня сложны.
|
|
| |
afq | Дата: Четверг, 13 Июня 2019, 07:28 | Сообщение # 508 | Тема: С первым днем лета! |
Разработчик
Сейчас нет на сайте
| JackNazaryan, а я бы хотел на бора-бора. Правда чтобы осуществить эту мечту, надо заработать много денег. Включил бы такую музычку.
И в пляс, смеясь, радуясь. А ра хорс ярило даждьбог сварог тонатиу светит для нас и жарит Землю. Ведь солнце наш вечный друг, который держит нас на расстоянии. Или солнце враг? Но на такой дистанции нам комфортно!
Добавлено (13 Июня 2019, 07:32) --------------------------------------------- Щас посмотрел что за участники форума и оказалось что три чела в один и тот же день зарегались. Видимо это боты. Чтобы казалось, что на сайте есть посящаемость. Возраст у них стоит один и тот же.

Добавлено (13 Июня 2019, 07:32) --------------------------------------------- Все ники David* с одним и тем же возрастом.
Сообщение отредактировал afq - Четверг, 13 Июня 2019, 07:33 |
|
| |
afq | Дата: Четверг, 13 Июня 2019, 01:07 | Сообщение # 509 | Тема: overkill [linux] [console] |
Разработчик
Сейчас нет на сайте
| drcrack, немного исправил. Тебе нравяться текстовые игры? Добавлено (13 Июня 2019, 01:08) --------------------------------------------- Скриншота нет, потому что нечего фоткать. Может потом кусок кода сфоткаю. Добавлено (13 Июня 2019, 07:36) --------------------------------------------- Интересно, видит ли кто нибудь в консольной игре ( которую я делаю ) ту силу, которую вижу я?
|
|
| |
afq | Дата: Четверг, 13 Июня 2019, 00:50 | Сообщение # 510 | Тема: overkill [linux] [console] |
Разработчик
Сейчас нет на сайте
| OverKill Платформа: Линукс Вид: текстовая
Делаю в своё удовольствие, а значит не всегда, а когда захочется. Планировать дату релиза не могу, потому что пишу игру не каждый день. Цель сделать игру, с помощью которой можно фантазировать и мечтать. Делаю для себя, но также и для других. Игра будет бесплатной. Сюжет ещё не продуман до конца, пока делаю текстовый движок, чтобы можно было легко создавать локации и взаимодействие с ними и с npc. В игре будет доступно несколько языков, но изначально игра будет только на русском. Если кто нибудь захочет помочь то сможет перевести её на другой язык, например английский. Ну или я когда изучу хорошо язык английский, переведу. Скорее всего в игре будет один главный герой, что игрока нельзя будет выбрать по характеристикам. Ну можно будет задать имя. Будет скорее всего несколько карт. Это лес, или несколько карт лесов и карт городов. Можно будет скорее всего брать какую нибудь работу. Также будет возможность убивать. В игре будет доступна моя хакерская игра. То есть я не придумал задания для игры хакера, и решил объединить хакера с этой игрой. В игре будут задания, в которых надо использовать компьютер. Может быть получиться боевичок. А может симулятор какой нибудь. Но главная фишка ( хаха ) в этой игре, это то, что когда ты прочитаешь текст, должен его представить. Так я задействую в игре мыслительные способности. У каждого будет своя графика в плане фантазий. Проект очень сложный. Пока есть немного кода. Надо всё правильно организовать, чтобы всё получилось.
Например я не знаю будет ли это в сюжете, но вот представьте. Сидишь дома. Залазишь в компьютер, смотришь объявления по работе. Звонишь, общаешься. Тебе звонит знакомый, просит тебя принести наркоты. Ты берешь наркоту и едешь к нему. Вы встретились, ты получил деньги. Поехал домой. Это никакой графикой не передать. У тебя заканчивается наркота, ты едешь в свой домик в лесу. Там дикие животные бродят. Ты пробираешься через лес к своему домику. Или там находишь мертвого учёного, у которого ключ карта к исследовательскому центру. Ты например проникаешь туда и вкалываешь себе вещество, которое даёт тебе возможность читать мысли. Ты едешь обратно в город. Тебе опять звонит знакомый просит привезти наркотика. Ты едешь получаешь деньги и узнаешь в его мыслях, что он информатор. Что ты будешь делать? Убить его? Или зарабатывать на нём деньги, пока облавы не будет? Можно будет взламывать магазины или гос учреждения. Менять там информацию. Быть невидимым для правительства. Может быть будут доступны несколько видов работы, на которые можно будет устроиться. Цель игры пока не придумал.
Сообщение отредактировал afq - Четверг, 13 Июня 2019, 01:07 |
|
| |
afq | Дата: Среда, 12 Июня 2019, 20:22 | Сообщение # 511 | Тема: Срочно нужен AI |
Разработчик
Сейчас нет на сайте
| drcrack, а блин, наподобие доты. Я не так прочитал. Я думаю что для реальной доты нужно.
Сообщение отредактировал afq - Среда, 12 Июня 2019, 20:23 |
|
| |
afq | Дата: Среда, 12 Июня 2019, 20:12 | Сообщение # 512 | Тема: Срочно нужен AI |
Разработчик
Сейчас нет на сайте
| faridunibodullo, ну ничего себе, там же есть боты и так, встроенные, как ты вообще представляешь делать бота. Он что будет получать изображение и анализировать кто где находиться?
|
|
| |
afq | Дата: Среда, 12 Июня 2019, 19:46 | Сообщение # 513 | Тема: Pascal u ncurses |
Разработчик
Сейчас нет на сайте
| Цитата Начинал как раз с Си. Результат - стойкое отвращение. camac, у меня такое отвращение к php, но я всё равно иногда пытаюсь его изучить. Просто в нашем городе без образования только в веб программировании можно найти работу. Вот я иногда вдохновляюсь и пытаюсь учить веб программирование. Но учить надо много. html, css, javascript, php. Раньше учил php, щас думаю, надо же всё таки научиться делать страницы сначала, ну там на html, css. Потом когда научусь делать красивые страницы, появиться вдохновение делать какой нибудь функционал, и тогда я думаю возьмусь за php уже серьезней. Я в подростковом возрасте начал изучать программирование, но из-за проблем с памятью ( которые я испытывал ) я забросил изучение. Очень долго гулял на улице. Дома редко бывал. И так я прогулял аж до 2012 года. Почти не работал, учиться, доучился, но егэ не сдал. Начал дома сидеть. Вот уже прошло 7 лет. А я даже и не знаю чем всё это время занимался. Вроде бы изучал си, но программ мало написал за такой то срок. Короче когда я работал мог заработать несколько тысяч всего рублей. А это мало. У меня есть последний шанс это научиться программировать и заработать на этом. Только так я получу удовольствие от работы ( наверное ). Когда можно из дома писать софт. Ну или ходить на работу, но программистом. В общем только программистом я смогу заработать больше 20 тыс рублей без образования.
Добавлено (12 Июня 2019, 19:58) --------------------------------------------- camac, я кстати писал на ncurses программу. https://github.com/xverizex/rfcreader Там навигация по документам rfc. Очень классно сделана программа. Жаль видео нет, раньше было. Там меню двигается. В коде может ничего и не разобрать, но я прекратил поддержку, когда всё довёл до конца. Единственной проблемой, которую не решил, так это я распаковываю архив с помощью консольной команды tar. Так как не осилил распаковку в программировании. Там вроде zlib нужна, а может и нет. В общем сделал проще, но работает. Например надо посмотреть документы по ip. Пишешь ip, после каждого нажатия подбираются совпадния по ключевому слову. Написал ip, выбрал вверх вниз нужный документ и нажал enter и читаешь документ.
Добавлено (12 Июня 2019, 20:21) --------------------------------------------- camac, я тут записал видео, правда видео ещё загружается, но к тому времени как ты посмотришь это видео, оно уже будет загружено. Я сделал на ncurses программу давно и чтобы было понятней как она работает, записал видео. Скоро оно будет доступно.
Добавлено (12 Июня 2019, 20:46) --------------------------------------------- camac сможешь такую на pascal сделать?Добавлено (13 Июня 2019, 00:18) --------------------------------------------- camac, если линукс, то там все команды ncurses.
Надо чтобы ncurses-doc был установлен.
Сообщение отредактировал afq - Среда, 12 Июня 2019, 20:51 |
|
| |
afq | Дата: Среда, 12 Июня 2019, 19:31 | Сообщение # 514 | Тема: flatingo — блог разработчика игр |
Разработчик
Сейчас нет на сайте
| JackNazaryan, я вспомнил как было голосование на одном из форумов. Я учавствовал в голосовании. Написал программу консольную, которая отдавала за меня голос и запускал в бесконечном цикле через тор сеть. У всех там 8, 12, 22 очка. А у меня 300, а может быть 800, я уже не помню. Было весело. Только я всё равно не стал победителем, я им об этом писал, что можно накрутить. Стали три победителя, я был один из них.
|
|
| |
afq | Дата: Среда, 12 Июня 2019, 06:28 | Сообщение # 515 | Тема: Уроки по программированию по си и c++ |
Разработчик
Сейчас нет на сайте
| Решил сделать уроки по си и c++. Правда не знаю, получится ли делать годный материал. Первое видео какое записал на эту тему, не разработка программы, а
Приведение типов в си.
То есть я даже и не думал раньше что так можно.
То есть код такое будет работать.
Код #include <stdio.h>
struct a { char a[4]; }a; struct b { int b; };
int main ( ) { char *m = &a.a[0]; for ( int i = 0; i < 4; i++, m++ ) *m = 0; a.a[0] = 3; printf ( "%d\n", ((struct b*) &a)->b ); }
Я это заметил случайно, когда додумался до этого, типа а что если так попробывать. И действительно получилось, и тогда моё понимание к си приблизилось. Даже не знаю, хорошо ли я объясняю. Нужен ли такой материал?
Добавлено (12 Июня 2019, 06:29) --------------------------------------------- Об этом я узнал где-то год или два назад. Хотя писал на си уже где-то два года, но редко.
Добавлено (12 Июня 2019, 06:30) --------------------------------------------- Видео получилось почему то низкого качества, щас посмотрю.Добавлено (12 Июня 2019, 06:50) --------------------------------------------- Офигеть, я так объясняю хахаха. Ещё такая речь. Блин.  Добавлено (12 Июня 2019, 07:34) --------------------------------------------- Не нафиг надо. Видео получилось ужасным. Добавлено (12 Июня 2019, 07:34) --------------------------------------------- Врядли я буду обучать программированию.
Сообщение отредактировал afq - Среда, 12 Июня 2019, 06:37 |
|
| |
afq | Дата: Среда, 12 Июня 2019, 02:11 | Сообщение # 516 | Тема: Pascal u ncurses |
Разработчик
Сейчас нет на сайте
| drcrack, кстати да, смешно. Добавлено (12 Июня 2019, 04:58) --------------------------------------------- camac, почитай его книгу https://gcup.ru/blog/kniga_put_v_programmisty/2019-06-10-1619. Только курс не покупай. Язык вполне можно самостоятельно освоить. Он как раз в книге советует изучать программирование на си. А этот язык довольно стойкий. На нём написаны ос. Линукс например написан на си. Это значит что си никогда не умрёт. Куча gnu софта написана на си. Я например даже в ядре линукса создавал свою api фукнцию, но не мог из си вызвать её, а через ассемблер получилось вызвать и получить результат. Вот например ты хочешь работать с изображением, мне для этого надо скачать нужные библиотеки. А как дела в pascal? Например новый формат появиться видео или изображения, они будут доступны только для си или c++, но скорее всего на си, а на c++ сделают обёртку ( чтобы работать было удобнее ). Я когда-то учил delphi и немного программировал. Но даже в то время на delphi уже трудно было найти работу в моём городе, а это был 2008 год. Да и на си конечно не найдешь, но ты сможешь создать для себя любую программу, если хватит сил, но библиотек тебе точно ( наверное ) хватит. Си как и паскаль, стуктурный а не объектно ориентированный. Вот например программа на паскаль.
Код program simple; var x: integer; begin a := 3; writeln ( 'a: ', a ); end.
В pascal переменные объявляются только в var или вроде в глобальной области видимости ( уже не помню ). В си же ты можешь объявить переменную в любом месте в коде, но только до его использования. Например в pascal надо использовать
А в си тоже не так сложно. Просто подключаешь заголовки функций. Этот заголовок
содержит в себе названия функций. Чтобы ими пользоваться, они должны быть объявлены. Также в си есть точка входа, это значит что в программе должна быть объявлена функция, с которой всё начинается. В си эта функция называется main. И вот получается код.
Код #include <ncurses.h>
int main ( ) { int a; a = 3; printf ( "a: %d\n", a ); initscr ( ); }
|
|
| |
afq | Дата: Вторник, 11 Июня 2019, 21:53 | Сообщение # 517 | Тема: Pascal u ncurses |
Разработчик
Сейчас нет на сайте
| camac, широкие символы это значит что один символ для отображения занимает два байта. Если английский символ занимает один байт
То русская буква занимает два байта. Это и есть широкий символ. Русские буквы будут видны и в ncurses, просто не посчитать правильно количество букв, если одна буква один байт, другая два байта. Да и кстати, если писать в широких символах, то английская буква тоже будет занимать два байта, только первый байт будет равен нулю вроде, или второй нулю.Добавлено (11 Июня 2019, 22:00) --------------------------------------------- camac, советую тебе изучить си язык. Для него очень много библиотек в линуксе. Можешь даже задавать мне вопросы по си, я может быть тебе отвечю. Прочитай книгу кернигана ритчи. Там вроде 300 страниц. Когда знаешь несколько языков, будет классно. Хочешь писать на pascal, пиши, захотел использовать либы, которых нет в паскаль, пишешь на си. В основном пишут библиотеки и всё прочее на си. Потом из-за этого можно использовать сишные функции в других языках. Так например на gtk можно писать на других языках. Правда gtk сложная либа, если самому виджет делать. Но си простой язык. Даже c++ не нужен. Если хочешь объектно-ориентированности, то выбирай c++. Например в c# и java есть ограничения в наследовании, хотя языки вроде бы не плохие, но разработчики не смогли сделать множественное наследование.
|
|
| |
afq | Дата: Вторник, 11 Июня 2019, 19:03 | Сообщение # 518 | Тема: Pascal u ncurses |
Разработчик
Сейчас нет на сайте
| drcrack, так я ему написал чтобы он установил эти библиотеки. И если не может найти ncursesw, то значит ncursesw скорее всего не установлена. Если у него в коде ncursesw стоит, то надо поменять на ncurses и убедиться что ncurses библиотека установлена на компьютер. Скорее всего у него просто эти библиотеки не установлены. А искать эти либы он должен в нужном месте. Добавлено (11 Июня 2019, 21:28) --------------------------------------------- А я понел что ты имеешь ввиду. Да сишные либы советую установить, а у него паскаль. Ну может там обёртка есть. Ну я щас посмотрю, как раз устанавливаю паскаль.
|
|
| |
afq | Дата: Вторник, 11 Июня 2019, 16:40 | Сообщение # 519 | Тема: Pascal u ncurses |
Разработчик
Сейчас нет на сайте
| camac, ну ncursesw это для широких символов. Вы точно хотите использовать ncursesw? Может просто ncurses? На си надо подключить заголовок , и при компиляции задать библиотеку. У вас же пишет что не найдены библиотеки. Вам надо их подключить. Добавлено (11 Июня 2019, 16:45) --------------------------------------------- Видимо может быть такое, что достаточно в коде написать использование библиотек. Тогда может вы не установили ncurses на компьютер.
Код sudo apt install libncurses5-dev sudo apt install libncursesw5-dev sudo apt install ncurses-doc
|
|
| |
afq | Дата: Воскресенье, 09 Июня 2019, 22:25 | Сообщение # 520 | Тема: Щприц с дозой информации |
Разработчик
Сейчас нет на сайте
| О, не плохо. А никто ничего не скажет, что за эти видео надо на других сайтах платить?
|
|
| |
|