Суббота, 20 Апреля 2024, 03:26

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » afq [893]
Результаты поиска
afqДата: Понедельник, 01 Июля 2019, 12:07 | Сообщение # 481 | Тема: Как начать
Разработчик
Сейчас нет на сайте
DrVooDoo, на java кстати есть сайт javarush.ru, там можно научиться на java программировать с самого начала.
afqДата: Понедельник, 01 Июля 2019, 11:25 | Сообщение # 482 | Тема: Как начать
Разработчик
Сейчас нет на сайте
DrVooDoo, у меня вот такая книжка есть по алгоритмам алгоритмы на c++. Только например если я понел алгоритм, то потом его забуду. Чтобы научиться планировать и прочее, нужен опыт в программировании. Пиши много программ консольных.

Добавлено (01 Июля 2019, 11:34)
---------------------------------------------
Например попробуй написать парсер регулярного выражения.

afqДата: Воскресенье, 30 Июня 2019, 14:22 | Сообщение # 483 | Тема: Помогите определиться с выбором профессии
Разработчик
Сейчас нет на сайте
martuk, давай, скидывай резюме.

Добавлено (30 Июня 2019, 14:22)
---------------------------------------------
sfabrikan, а кем ты работаешь?

afqДата: Суббота, 29 Июня 2019, 23:26 | Сообщение # 484 | Тема: Помогите определиться с выбором профессии
Разработчик
Сейчас нет на сайте
DivES, нда, ты логично рассуждаешь.
afqДата: Суббота, 29 Июня 2019, 23:07 | Сообщение # 485 | Тема: Помогите определиться с выбором профессии
Разработчик
Сейчас нет на сайте
А на своих играх инди, например на unity заработать сложнее же, лучше в веб разработку же да?
afqДата: Суббота, 29 Июня 2019, 21:19 | Сообщение # 486 | Тема: Помогите определиться с выбором профессии
Разработчик
Сейчас нет на сайте
Есть знания php и java. У меня нет образования. Ну то есть есть, но 9 классов. Думаю что выбрать, веб разработку на php и т.д. или android разработку. На веб разработку можно без образования устроиться, а на мобильную я не спрашивал, поэтому не знаю. На веб разработке надо много учить и большая конкуренция наверное, а в мобильном сегменте тоже самое скорее всего. Пока что хочу сделать свою cms на php, чтобы разобраться как всё таки cms работают. Мобильную разработку я забросил, но если надо, то можно погрузиться. Я думаю что учиться в двух направлениях будет долгим процессом, но можно по желанию, либо то учу сегодня, либо это. Мне физическая работа не нравиться. Хочу работать программистом и возможно удалённо, чтобы из дома. Так как мне нравиться программирование, рассматриваю возможность заработать на любимом деле. Есть знания си c++, но они для собственных нужд, да и на работу с такими языками в основном берут с образованием. Кто что думает, куда податься? Ваши аргументы!
afqДата: Суббота, 29 Июня 2019, 19:27 | Сообщение # 487 | Тема: паттерны проектирования
Разработчик
Сейчас нет на сайте
Цитата
Ну тогда остается либо банда четырех, либо выучи основы Java, основы языка не сложные, учитывая что ты на C/C++ программируешь, сможешь понять книгу и хорошую базу по ООП получишь.

Я знаю java, может быть не очень хорошо, но знаю. И эту книгу, которую ты советовал я читал, только не всю. Там вообще написано было, что эти паттерны подходят для web разработчиков.
afqДата: Пятница, 28 Июня 2019, 11:12 | Сообщение # 488 | Тема: паттерны проектирования
Разработчик
Сейчас нет на сайте
JackNazaryan, да я там накосячил. Я действительно сделал не полностью абстрактную фабрику. Потом в книгу заглянул и увидел что там создаются объекты, а я только текст вывожу вместо этого. Да и надоело мне делать эти видео, лучше сам научусь, а если кто спросит то может объясню. Хотя отсылку к видео полезно было бы иметь.
afqДата: Четверг, 27 Июня 2019, 13:51 | Сообщение # 489 | Тема: паттерны проектирования
Разработчик
Сейчас нет на сайте
Xakep, head first это по java, а я по c++ читал.

Добавлено (27 Июня 2019, 14:13)
---------------------------------------------

Цитата
В каком месте это абстрактная фабрика? это простой полиморфизм, абстрактная фабрика - это порождающий шаблон, он должен создавать объекты, а не тупо вызывать виртуальные методы.

Xakep, мда, надо было вместо текста создать объекты.
afqДата: Среда, 26 Июня 2019, 22:03 | Сообщение # 490 | Тема: паттерны проектирования
Разработчик
Сейчас нет на сайте
up

Добавлено (26 Июня 2019, 22:04)
---------------------------------------------
drcrack, приходилось звук делать записывать очень громко, чтобы мою речь услышать.

Добавлено (26 Июня 2019, 22:05)
---------------------------------------------
drcrack, кстати смешно да, слышно как я дышу.

Добавлено (26 Июня 2019, 22:40)
---------------------------------------------
Думаю больше не записывать видео такой тематики. Так как любой может нормально почитать книжку и понять.

Сообщение отредактировал afq - Среда, 26 Июня 2019, 22:20
afqДата: Среда, 26 Июня 2019, 14:57 | Сообщение # 491 | Тема: паттерны проектирования
Разработчик
Сейчас нет на сайте
Пробывал на youtube смотреть уроки на эту тематику, но они казались какими-то сложными. Было много кода, хотя суть всего в нескольких строчках кода. В этом цикле видео я хотел объяснить простым языком и кодом про паттерны. Примеры будут максимальны просты, чтобы понять что такое определённый паттерн. Даже в книге уходит на это несколько страниц, приводятся примеры по языку smaltalk. В общем смотрим.

Абстрактная фабрика


Паттерн строитель, я даже не много поржал от того как я объясняю этот паттерн. Ему я приминения не нашёл, очень сложно для такого паттерна мне что-то придумать для примера.
Строитель


Сообщение отредактировал afq - Среда, 26 Июня 2019, 22:03
afqДата: Вторник, 25 Июня 2019, 22:17 | Сообщение # 492 | Тема: Мультик Поле динозавров
Разработчик
Сейчас нет на сайте
dreenline, смотреть было интересно. Делайте ещё.
afqДата: Вторник, 18 Июня 2019, 10:08 | Сообщение # 493 | Тема: Уроки по программированию по си и 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 | Сообщение # 494 | Тема: Уроки по программированию по си и 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 | Сообщение # 495 | Тема: как написать большую игру на C++ & SFML (не 3d)
Разработчик
Сейчас нет на сайте
zaicev9797, фиг знает как они реализовали свои движки. Но они сложные. Например в unreal трудно будет найти скорее всего что ты хочешь, а может и нет. Ну вот например физика. В цикле есть метод update ( ), в нем ты логику задаешь, что объект будет делать при смене времени. А есть функция, которую не надо менять. Она запускается перед update, в ней проверяется, если объект добавлен к физическому движку, то выполнить действие. В box2d надо же объект вроде добавить в класс определённый. Например класс физического движка такой, он с глобальной областью видимости.
Код

void set_physix ( true ) {
  Box2d.add ( this );
}

И всё, перед update выплняется функция, в которой Box2d обновляет позиции объектов. А потом update, где ты передвигаешься.
afqДата: Суббота, 15 Июня 2019, 12:53 | Сообщение # 496 | Тема: Массив содержащий компоненты игрового обьекта
Разработчик
Сейчас нет на сайте
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 | Сообщение # 497 | Тема: Массив содержащий компоненты игрового обьекта
Разработчик
Сейчас нет на сайте
Цитата
если к тебе подойдет ребенок с игрушечным бульдозером и совочком для песка, и скажет что хочет построить 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 | Сообщение # 498 | Тема: Дешевый SSD хостинг на DDR4 с DDOS защитой для 10 сайтов
Разработчик
Сейчас нет на сайте
HostiMan, а я могу не сайты, а например консольные утилиты сетевые использовать? У вас есть доступ к консоли? Ну например в том, который за 300 рублей?
afqДата: Четверг, 13 Июня 2019, 20:53 | Сообщение # 499 | Тема: 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 | Сообщение # 500 | Тема: С первым днем лета!
Разработчик
Сейчас нет на сайте
JackNazaryan, а я бы хотел на бора-бора. Правда чтобы осуществить эту мечту, надо заработать много денег.
Включил бы такую музычку.

И в пляс, смеясь, радуясь. А ра хорс ярило даждьбог сварог тонатиу светит для нас и жарит Землю. Ведь солнце наш вечный друг, который держит нас на расстоянии. Или солнце враг? Но на такой дистанции нам комфортно!

Добавлено (13 Июня 2019, 07:32)
---------------------------------------------
Щас посмотрел что за участники форума и оказалось что три чела в один и тот же день зарегались. Видимо это боты. Чтобы казалось, что на сайте есть посящаемость. Возраст у них стоит один и тот же.


Добавлено (13 Июня 2019, 07:32)
---------------------------------------------
Все ники David* с одним и тем же возрастом.


Сообщение отредактировал afq - Четверг, 13 Июня 2019, 07:33
Форум игроделов » Записи участника » afq [893]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг