>>256281305 И что, предлагаешь опу теперь передавать всё его состояние программы через аргументы функции, лишь бы у него в коде goto не было? Ты дурак? Получится то же самое спагетти. Проблема опа изначально в том, что он ad hoc говно без каких либо структур данных пишет, goto - это следствие.
>>256279176 (OP) Конечно это залупа. Но это норм для начальных попыток. Потом будешь изучать новую хуйню разную и писать более поддерживаемые и адекватный код. мимо .NET Senior dev 450к/мес
>>256281813 ничего не предлагаю, но высру свои ниибаться полезные поверхностные советы, как будто, если он уберёт using или заменит метки на функции, то сделает его код менее говном
>>256282071 дебс, я уже объяснил тебе, почему совет "запихни всё в функцию" не сработает, опу по-хорошему надо было начать писать свою хуйню с создания своих типов и операций над ними, он же не сможет банально добавить больше врагов, если продолжит писать в таком шизостиле
но нет, надо посоветовать добавить юзинг, лишь бы высраться, лишь бы сойти за вумного
>>256281920 Анончик, подскажи, хорош .net сейчас для вкатывальщиков в России или нужно ждать пока платформа повзрослеет? Я поридж, все вокруг вкатываются на frontend и java с python
>>256282239 я ответил на вопрос опа, почему за гото бьют палками и привел пример. какие ты тут советы увидел, я хз. да и зачем я вообще с тобой разговариваю?
>>256282596 >Уже давно повзрослела Я имею ввиду объедненный дотнет 5+, ему же пару лет всего. А крупный бизнес обычно не использует молодые технологии. Я видел вакухи для джунов в дс, но там старье на .net framework с виндовс сервером и их бд
>>256282448 ты аутист? ты свой говнопример написал очевидно как противопоставление кода, который высрал оп, у функции имя сделал такое же, как имя метки у опа, и нихуя не сделает код опа лучше замена goto на функции
а если закрыть глаза на это, то твой пример вообще нихуя не показывает, почему программа с goto хуже читается, чем программа, разбитая на функции, просто показал синтаксис объявления и вызова функции
>>256279176 (OP) Полное говно. На веь код 2-3 примитивнейшие конструкции, которые зачем-то повторяют много раз, причем однообразно. Не показывают примеры, как можно улучшать читабельность кода и сокращать его размеры при помощи этих же самых ифов и вайлов, как правильно каунтеры считать. Т.е. вы просто топчитесь на одном месте очень долго, а могли бы просто почитать любую книжку по плюсам и уже чуть-чуть шарить в стд и классах.
>>256280762 Мелкобуква как всегда дебил. Наверное все стандарты кода тоже 50 лет написали, раз они начинаются с фразы о том, что за готу тебе процессор нужно сжигать?
и обязательно надо оглядываться на стайлгайды каких-то хуесосов, свой собственный опыт выбросить на помойку
когда надо выйти из вложенного цикла наружу, то тоже, видимо, надо хуйню какую-то городить с переменной-флагом и ифом во внешнем цикле, лишь бы goto не было
>>256283077 >>256283321 Вы оба ёбнутые какие-то, сами вчера только закончили поди. Ему бы сперва Главный Цикл читабельно оформить на функциях. Какие конечные автоматы нахуй? Рано ещё.
>>256283550 > когда надо выйти из вложенного цикла наружу, то тоже, видимо, надо хуйню какую-то городить с переменной-флагом и ифом во внешнем цикле, лишь бы goto не было Пердиксы не знаю про break?
>>256284108 так на дваче я же не по 8 часов сижу. >>256283845 неа, я понимаю когда погромирование задачи в науке и технике решает, а когда очередной говносайт пилят, это же убожество >>256283839 на заводе куда интереснее работать.
>>256283550 >когда надо выйти из вложенного цикла наружу, то тоже, видимо, надо хуйню какую-то городить с переменной-флагом и ифом во внешнем цикле Да, разумеется.
>>256280345 Делал я ваши классы в жс для браузерной игрушки, сафари вообще не ест нормальный опп после переделывания получилось что то вроде человека с сердцом снаружи
>>256284270 >унылая хуйня это ваше погромирование >я понимаю когда погромирование задачи в науке и технике решает >унылая хуйня >погромирование >задачи в науке и технике решает >погромирование
>>256284977 я сам гото не пользую, потому что если нормально писать, то он и не нужен никогда в 99.999% случаях, меня просто бесят хуилы, которые как попугаи повторяют то, что услышали от кого-то вумного
да и вообще код почти не пишу, только в интернете всех нахуй посылаю
Вы в пту учитесь? Я тоже в вашем возрасте программировал игры, только на паскале и не такую хуйню. В начале определял собственные типы данных, в которые добавлял все свойства игровых объектов, потом писал процедуры, обрабатывающие переменные этих типов таким образом, чтоб получалась игра. Алгоритм сражения с орком неинтересен и бесполезен, даже с образовательной целью. По-моему самая доступная для реализации игра это змейка, так там алгоритм перемещения змейки по полю интереснее и полезнее, чем то, что на скриншоте. Мне этот ваш хелловорлд напоминает "калькуляторы" вкатышей, выполняющие действия всего над двумя операндами. Смысл таких программ?
>>256285220 Мне вообще кажется что графическая игра даже проще делается чем эта ебля с переменными, то есть текстовые ролки пиздец сложно писать а змейку можно за день
>>256283704 так эти буковками и циферками создана платформа, на которой ты находишься и балдеешь. ещё можно другие разные приколы делать развлекушные. а вот формочки стряпать на фреймворке в коммерчсеской разработке уныло, да
Бродяги, всё яд и всё лекарство как говорится. Любую штуку опасно использовать бездумно, если не можешь обосновать необходимость её использования для решения конкретной задачи. Иногда и антипаттерны приходится использовать, если ты отдаёшь себе отчёт и понимаешь все его издержки, понимаешь что в текущий момент плюсы перекрывают минусы. А goto это или что-нибудь другой - не важно. Но стоит помнить, что если вы осознаёте все плюсы и минусы какого-либо подхода применимо к текущей задаче - далеко не факт что тот, кто будет поддерживать ваш код в дальнейшем тоже всё понимает. Используя сомнительные практики вы усложняете работу другим людям, делаете код неявным. Если всё-же костылируете - пишите развёрнутые комментарии, описывайте какую именно проблемы вы подпёрли костылём и почему. А вообще писать код нужно так, будто после вас его будет поддерживать маньяк с бензопилой, который знает где вы живёте. Всех благ.
>>256285301 То что мы видим на скриншотах хуйня даже по сравнению со змейкой. Сложно назвать игрой нагромождение иф'ов, проверяющих случайное значение, занесенное в переменную.
>>256289098 Так ты бы его тогда хоть в переменную с понятным названием выделил что ли, а то этот захардкоженный 0 так и просит его стереть нахуй или вообще вынес генерацию в отдельный метод, раз есть какая то логика кроме вызова базового рандома
>>256285301 > Мне вообще кажется что графическая игра даже проще делается чем эта ебля с переменными Только с точки зрения геймдизайна. > а змейку можно за день А змейку за час можно сделать.
>>256279176 (OP) Пока не прикрутишь полноценный цикл приложения и не сделаешь разные виды врагов и функции к ним через общие интерфейсы, не можешь называться даже вкатышем.
>>256279176 (OP) >чем мы занимаемся на программировании? Портите глаза, сидя в темной теме в нормально освещенном помещении. Проигрываю с пту, в которых нет кафедры охраны труда, где малолетним уебанам объясняют разницу между "черным по белому" и "белым по черному"
>>256283550 >и обязательно надо оглядываться на стайлгайды каких-то хуесосов, свой собственный опыт выбросить на помойку Лол, нет, конечно. Ведь стайлгайды дебилы пишут. Один ты, со своим собственным опытом, умный, и знаешь, как лучше. Так держать!
>>256283550 >#centralized-exiting-of-functions Потому что это C, где надо вручную за собой говно чистить. С деструкторами потребность в этом резко падает.
>>256302430 >Смесь древнего C-стайла и плюсов Вот на это не гони. Это практически вершина языка, а то, во что сейчас превратили С++ - промудохуеблядская пиздопроеботина
>>256302809 >С несколькими объявлениями и присвоениями в одном выражении можно с указателями обосраться. Как известно, чем меньше строк, тем лучше код. Все молодые и шутливые вообще все в одну строку пишут.
Ты просто старый дед-пердед, который, небось, еще и за деньги программирует, фу таким быть!
>>256279176 (OP) >IF A >GOTO >IF B >GOTO >IF C >GOTO Сука, тебя обычному функциональному программированию не обучили? Нахуй ты серешь метками и if-ами в простейшем условном ветвлении, где хватило бы даже switch? Ебать какой же каловый салат из говнокода нахуй, некоторым это просто не дано.
program sokoban; uses crt; type TMap = array[1..37] of array[1..50] of char; Coord = record x, y: integer; end; TCheckPoints = record count: integer; arr: array of Coord; end;
procedure initMap(var map: TMap); var i, j: integer; begin for i:=1 to 37 do for j:=1 to 50 do map[i, j] := ' '; end;
procedure addToCheckPoints(var chckP: TCheckPoints; i: integer; j: integer); begin inc(chckP.count); if length(chckP.arr) < chckP.count then setlength(chckP.arr, length(chckP.arr)*2); with chckP.arr[chckP.count] do begin y := i; x := j; end; end;
function FindInCheckPoints(var chckP: TCheckPoints; x: integer; y: integer): boolean; var i: integer; begin FindInCheckPoints := false; for i:=1 to chckP.count do if (chckP.arr.x = x) and (chckP.arr.y = y) then begin FindInCheckPoints := true; exit; end; end;
procedure renderChckP(var chckP: TCheckPoints); var i: integer; begin for i:=1 to chckP.count do begin gotoXY(chckP.arr.x, chckP.arr.y); write('.'); end; end;
procedure renderMap(var map: TMap; var chckP: TCheckPoints); var i, j: integer; begin for i:=1 to 37 do for j:=1 to 50 do begin if findInCheckPoints(chckP, j, i) and (map[i,j] <> '$') then continue; gotoXY(j, i); write(map[i,j]); end; end;
procedure renderActor(var actor: Coord); begin gotoXY(actor.x, actor.y); write('@'); end;
procedure moveObject(var map: TMap; obj: Coord; x: integer; y: integer); var c: char; begin c := map[obj.y, obj.x]; map[obj.y, obj.x] := ' '; map[y,x] := c; end;
function isOver(var map: TMap; var ChckP: TCheckPoints): boolean; var i, j, count: integer; begin isOver := false; count := 0; for i:=1 to 37 do for j:=1 to 50 do if map[i, j] = '$' then begin if FindInCheckPoints(ChckP, j, i) then begin inc(count); end; end; if count = chckP.count then isOver := true; end;
function isCargoMoveable(var map: TMap; x: integer; y: integer): boolean; begin isCargoMoveable := true; if (map[y, x] = '#') or (map[y, x] = '$') then isCargoMoveable := false; end;
function checkCollision(var map: TMap; var Actor: Coord; x: integer; y: integer): boolean; begin checkCollision := false; if map[y, x] = '#' then checkCollision := true else if map[y, x] = '$' then if not isCargoMoveable(map, x+(x-Actor.x), y+(y-Actor.y)) then checkCollision := true; end;
procedure moveActor(var map: Tmap; var Actor: Coord; x: integer; y: integer); var obj: Coord; begin if not checkCollision(map, actor, x, y) then begin if map[y, x] = '$' then begin obj.x := x; obj.y := y; moveObject(map, obj, x+(x-Actor.x), y+(y-Actor.y)); end; Actor.x := x; Actor.y := y; end; end;
var i, j, level: integer; c: char; actor: Coord; map: TMap; f: text; flag: boolean; chckP: TCheckPoints; begin initMap(map); level := 1; initCheckPoints(chckP); assign(f, 'sokoban.txt'); reset(f); i:=1; flag := true; while flag do begin j:=1; while not Eoln(f) do begin c := ' '; read(f, c); if c = '!' then begin flag := false; break; end; if c = '@' then begin actor.x := j; actor.y := i; end else if c = '.' then addToCheckPoints(ChckP,i,j) else map[i, j] := c; inc(j); c := ' '; end; readln(f); inc(i); end;
repeat clrscr; renderChckP(chckP); renderMap(map, chckP); renderActor(Actor); c := ReadKey; case c of 'w': moveActor(map, Actor, Actor.x, Actor.y-1); 's': moveActor(map, Actor, Actor.x, Actor.y+1); 'a': moveActor(map, Actor, Actor.x-1, Actor.y); 'd': moveActor(map, Actor, Actor.x+1, Actor.y); end; until (c = 'q') or isOver(map, chckP); clrscr;
по факту опу только на функции переписать + структурки для описания сущьностей игры + простейшую стейт машину для реализации логики игры, этого ему бы этого хватило для обучения первое время если препод в его шараге нормальный, то примерно так и скажет и попросит переписать код, но сильно сомневаюсь что преподу есть до этого хоть какое то дело мимо безработный 10 лет программист-заучка
>>256303345 > обычному функциональному программированию не обучили В голос. Ты бы сперва разобрался, что есть функциональное программирование и чем оно отличается от структурного, а потом лез со своими советами.
>>256305994 Хуелос. Всю парашу, что он закодил через гоуту можно вынести в отдельную матмодель и целиком вычислять в вынесенной функции, просто передавая туда параметры из свитча. Любая текстовая рпг пишется на матмодели, вафельная ты ослица, а вторая часть про доебки непосредственно к коду к этой мысли не привязана.