Подробнее
Дерьмо которое я сделяль,People & Blogs,,
geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,программирование,я сделяль,песочница,видео,video
Графический интерфейс на паскале какой-то когнитивный диссонанс вызывает. Мне казалось он помер еще до того как графические интерфейсы вообще появились.
молодец, без иронии :) да, я типичный мимокрокодил, но посоветовал бы сделать все то же самое, но простым веб приложением как вариант, backend на .net core (или nodejs) и frontend - чистый js по крайней мере будет не стыдно показать при первом трудоустройстве отдельным бонусом зачтется репозиторий с кодом на github
а потом можно и базу даных с пользователями прикрутить, игровые чатики, рейтинги, автопроигрыш предыдущих партий и заверте...
Не не не, про мимокрокодила и мультиплеер речь не шла, только в разделе "а потом можно...". А зная современные подходы к разработке, я вполне готов предоставить сингл плеер в вебе с дотнетом и node_modules на полгига.
Если же речь о мультиплеере, то тут между паскальной демкой и мультиплеером онлайн - как до Луны пешком: игровые сессии (как-то этот мимокрокодила нужно найти), вебсокеты итп итд.
Превеличайше благодарствую и хочу сказать что программа еще не доделана (на что толсто намекает вывод двумерного массива), т.к. во первых она реализована через не очень подходящий для нее оператор ввода, тот который нужен я еще буду изучать (эта версия сделана мной через 6 мес. обучения), а во вторых она смотрится не очень. Хочется чего-нибудь как у CB или что то типа того.
И ничего из того что идет от "как вариант" и до "чистый js" я не понял, но разберусь
Приятно что хоть кому то не все равно (кроме мамы и информатика, но они всегда одобряют)
Вот объясните мне, долбоебу, ну как все это работает? коды, компьютеры. Ну хорошо окей, у тебя есть куча транзисторов и кремниевых пластин, ты через все это пропускаешь ток (уууух бля) и? Вот как программировали первый, хер с ним компьютер, калькулятор с принтером?. Вот откуда он знает что команда print должна что то печатать, а не рисовать на экране залупу? Как он вообще понимает что что то надо рисовать, переводить потоки напряжения, чтобы задействовалась, цепь, которая отвечает за отрисовку определенного пикселя на экране? Вы такие мне, ну ты че дурак чтоли, там же программа написана! А я спрошу, как куча металла ПОНИМАЕТ что за конкретно написанный текст, должно происходить то или это? ну вот как?
Я сам без понятия, я как шизик постоянно задаюсь вопросами типа "как и почему разьем под наушники изнашивается", и обычно получаю ответ, но это... я даже не уверен что производители процессоров в курсе, в этой маленькой срани помещаются сотни, тысячи и миллионы транзисторов, но сука кааак. И я забил на эти размышления, птмшт это для меня слишком сложно
Точно так же, как ты понимаешь что пишут другие. Мы же тоже (люди) по сути набор транзисторов (нервных клеток) и перефирии к ним.
Вот и комп принимает твой "print" - переводит в понятные ему нули и единицы и рисует тебе залупу, потому что ты забыл подключить кабель)
А оно и не понимает, текст парсится и переводится в вызовы к другим модулям, так по цепочке доходит до API операционной системы, ОС выполняет команды и она имеет доступ к оборудованию(через драйвера).
А как транзисторы работают это уже магия мне неизвестная.
Окей окей вызовы к другим модулям, пусть это хоть морзянка телеграфная, мне не понятен сам механизм, гипертрофируя я могу стучать по столу и кричать "превратись в табуретку я код написал", но че то не работает да. Другими словами как кусок минерала, вообще в этом модуле работает, может совершать прописанные операции, а еще "обучаем, лол"
Короткий ответ: Харрис и Харрис "цифровая схемотехника".
Долгий ответ:
Все эти принты, экраны, залупы, драйвера и операционные системы есть слои абстракции, позволяющие тратить на написание программ чуть меньше, чем сто лет. В конце-концов мы имеем машинные инструкции - просто набор чисел. Почему именно таких чисел и почему, условно, 0x24 - это сложить, а 0xD3 - безусловный переход? Потому что так решили те, кто спроектировал архитектуру и систему команд процессора.
Базовые компоненты:
АЛУ (арифметически-логическое устройство), которое умеет складывать/вычитать/сравнивать числа, которые приходят ему на вход. Как определяется, что делать? Надо подать код команды, в зависимости от которого мультиплексор подключит тот или иной блок.
Регистровый файл - куча транзисторов, которые могут запоминать и хранить числа. Из где-то 10-30.
Отдельно есть регистр адреса и регистр команды.
Блок управления. Об этом позже.
По сигналу тактого генератора, другая кучка транзисторов подключает регистр адреса к определенным ногам процессора, к которым оперативка приделана. Почему? Такая схема. Оперативка в ответ на эти циферки передает на другие ноги процессора ещё какие-то циферки - команду. Почему? Такая схема оперативки. Эта команда попадает в регистр команды. Структура команды строго известна: какие биты - код команды, какие - операнды. Эти биты подключены проводками к блоку управления, который, в зависимости от команды, управляет разным мультиплексорами. Мультиплексор - это что-то вроде железнодорожной стрелки. Например, какую операцию выбрать в АЛУ, какой регистр подключить к первому операнду, какой ко второму, какой к результату. Как происходит выбор? В простейшем случае, с помощью большой комбинационной схему, которая в зависимости от кода команды (просто нескольких бить) выставляет ту или иную комбинацию сигналов на разные устойчива (АЛУ, мультиплексоры, память итп).
Вот, собственно, все. Читай память, пиши память, производи арифметические операции над числами в регистрах. Это вся работа ЦПУ. Как напечатать хеллоу ворлд? Ну где-то в пямяти есть здоровенный массив - буфер экрана. Его адрес лежит в каком-то регистре. В определенные места можно записать чиселки, условно обозначающие цвета. Как число, обозначающие букву превращается в сложную последовательность каких-то записей в память? Какой-то умник в майкрософте написал. Как вывести на экран? Пиши в определенные числа так, чтоб подергать ноги, куда подключена видеокарта. Почему именно сюда писать? Так придумал умник, который сделал проц, что вот если пишешь сюда, дергаются этим ноги. Почему именно так дергать? Так придумал умник, который сделал видеокарту
Хорошая тема в плане понять саму суть программирования на уровне "чуть больше, чем азы", и что самое главное - написать что-то, что дает осязаемый результат.
Но вообще, как правильно сказали, стоит перейти на что-то "поживее", возможно python, хз.
Как человек, еще до виндовой эры баловавшийся на бейсике и паскале, но так и не ставший программером ввиду непонимания где и куда идти (хотя как сисадмин и дба использующий различное скриптописательство для автоматизации) посоветовал бы уже сейчас стремиться к более "читабельному" коду и несколько по другому строить в голове работу программы.
Если ты через года 2-3 когда-то наткнешься на этот код, будешь ломать голову "а что делает этот кусок программы".
существует куча разных советов и best practice. у меня лучше всего получалось осваивать следующим путем:
взять небольшую прогу, написанную "в хорошем стиле" и имеющую функции ввода-вывода, схожие с тем, что хочу получить, и уже по образу и подобию пилить что-то свое. в идеале конечно хорошо если это прога кого-то знакомого, которого можно иногда спросить когда что-то непонятно, но не задрачивая вопросами каждые 5 минут, а пытаться разобраться по возможности самому.
разбивать прогу на понятную структуру, юзать процедуры и функции. gui отделить от логики, использовать понятные и очевидны имена переменных, процедур и функций. (ну "x,y" в данном случае возможно допустимо оставить, координаты самоочевидны, возможно имя массива тоже)
стоит подумать о возможности масштабирования, поэтому всячески избегать "хардкодить" цифры прямо в тело (типа 7,6 как размеры поля и/или 740,720)
Желательно указать их со старта как константы, потом ссылаться на них, либо вычислять, исходя из них.
Ты и так это делал один раз, когда высчитывал все эти цифры в textout, но указал в программе числовые значения.
Просто если вдруг понадобится изменить кол-во рядов или ширину окна, потом придется скакать по всему коду, меняя эти цифры, вспоминать "а хуле у меня тут 140 а там 130", потом что-нибудь обязательно проебется и даже в проге, которая до того была вылизана и отлажена, вдруг неясно откуда появятся баги.
how programmers overprepare for job interviews,Entertainment,joma,vlog,Mapa hash.
???? Video courses from JomaClass:
???? New to programming? Learn Python here: https://joma.tech/35gCJTd
???? Learn SQL for data science and data analytics: https://joma.tech/3nteQih
???? Data Structures and
да, я типичный мимокрокодил, но посоветовал бы сделать все то же самое, но простым веб приложением
как вариант, backend на .net core (или nodejs) и frontend - чистый js
по крайней мере будет не стыдно показать при первом трудоустройстве
отдельным бонусом зачтется репозиторий с кодом на github
а потом можно и базу даных с пользователями прикрутить, игровые чатики, рейтинги, автопроигрыш предыдущих партий и заверте...
искренне желаю удачи в начинаниях :)
Паскальный бинарь на несколько десятков килобайт
vs
.NET + Браузер + JS
Если же речь о мультиплеере, то тут между паскальной демкой и мультиплеером онлайн - как до Луны пешком: игровые сессии (как-то этот мимокрокодила нужно найти), вебсокеты итп итд.
И ничего из того что идет от "как вариант" и до "чистый js" я не понял, но разберусь
Приятно что хоть кому то не все равно (кроме мамы и информатика, но они всегда одобряют)
Вот и комп принимает твой "print" - переводит в понятные ему нули и единицы и рисует тебе залупу, потому что ты забыл подключить кабель)
А как транзисторы работают это уже магия мне неизвестная.
Долгий ответ:
Все эти принты, экраны, залупы, драйвера и операционные системы есть слои абстракции, позволяющие тратить на написание программ чуть меньше, чем сто лет. В конце-концов мы имеем машинные инструкции - просто набор чисел. Почему именно таких чисел и почему, условно, 0x24 - это сложить, а 0xD3 - безусловный переход? Потому что так решили те, кто спроектировал архитектуру и систему команд процессора.
Базовые компоненты:
АЛУ (арифметически-логическое устройство), которое умеет складывать/вычитать/сравнивать числа, которые приходят ему на вход. Как определяется, что делать? Надо подать код команды, в зависимости от которого мультиплексор подключит тот или иной блок.
Регистровый файл - куча транзисторов, которые могут запоминать и хранить числа. Из где-то 10-30.
Отдельно есть регистр адреса и регистр команды.
Блок управления. Об этом позже.
По сигналу тактого генератора, другая кучка транзисторов подключает регистр адреса к определенным ногам процессора, к которым оперативка приделана. Почему? Такая схема. Оперативка в ответ на эти циферки передает на другие ноги процессора ещё какие-то циферки - команду. Почему? Такая схема оперативки. Эта команда попадает в регистр команды. Структура команды строго известна: какие биты - код команды, какие - операнды. Эти биты подключены проводками к блоку управления, который, в зависимости от команды, управляет разным мультиплексорами. Мультиплексор - это что-то вроде железнодорожной стрелки. Например, какую операцию выбрать в АЛУ, какой регистр подключить к первому операнду, какой ко второму, какой к результату. Как происходит выбор? В простейшем случае, с помощью большой комбинационной схему, которая в зависимости от кода команды (просто нескольких бить) выставляет ту или иную комбинацию сигналов на разные устойчива (АЛУ, мультиплексоры, память итп).
Вот, собственно, все. Читай память, пиши память, производи арифметические операции над числами в регистрах. Это вся работа ЦПУ. Как напечатать хеллоу ворлд? Ну где-то в пямяти есть здоровенный массив - буфер экрана. Его адрес лежит в каком-то регистре. В определенные места можно записать чиселки, условно обозначающие цвета. Как число, обозначающие букву превращается в сложную последовательность каких-то записей в память? Какой-то умник в майкрософте написал. Как вывести на экран? Пиши в определенные числа так, чтоб подергать ноги, куда подключена видеокарта. Почему именно сюда писать? Так придумал умник, который сделал проц, что вот если пишешь сюда, дергаются этим ноги. Почему именно так дергать? Так придумал умник, который сделал видеокарту
Но вообще, как правильно сказали, стоит перейти на что-то "поживее", возможно python, хз.
Как человек, еще до виндовой эры баловавшийся на бейсике и паскале, но так и не ставший программером ввиду непонимания где и куда идти (хотя как сисадмин и дба использующий различное скриптописательство для автоматизации) посоветовал бы уже сейчас стремиться к более "читабельному" коду и несколько по другому строить в голове работу программы.
Если ты через года 2-3 когда-то наткнешься на этот код, будешь ломать голову "а что делает этот кусок программы".
существует куча разных советов и best practice. у меня лучше всего получалось осваивать следующим путем:
взять небольшую прогу, написанную "в хорошем стиле" и имеющую функции ввода-вывода, схожие с тем, что хочу получить, и уже по образу и подобию пилить что-то свое. в идеале конечно хорошо если это прога кого-то знакомого, которого можно иногда спросить когда что-то непонятно, но не задрачивая вопросами каждые 5 минут, а пытаться разобраться по возможности самому.
разбивать прогу на понятную структуру, юзать процедуры и функции. gui отделить от логики, использовать понятные и очевидны имена переменных, процедур и функций. (ну "x,y" в данном случае возможно допустимо оставить, координаты самоочевидны, возможно имя массива тоже)
стоит подумать о возможности масштабирования, поэтому всячески избегать "хардкодить" цифры прямо в тело (типа 7,6 как размеры поля и/или 740,720)
Желательно указать их со старта как константы, потом ссылаться на них, либо вычислять, исходя из них.
Ты и так это делал один раз, когда высчитывал все эти цифры в textout, но указал в программе числовые значения.
Просто если вдруг понадобится изменить кол-во рядов или ширину окна, потом придется скакать по всему коду, меняя эти цифры, вспоминать "а хуле у меня тут 140 а там 130", потом что-нибудь обязательно проебется и даже в проге, которая до того была вылизана и отлажена, вдруг неясно откуда появятся баги.
условно говоря, я бы писал что-то типа
...(variables)
ExitGame, EndOfGame: boolean;
begin
Player=1;
ExitGame:=false;
EndOfGame:=false;
StartMessage;
DrawTable;
While not ExitGame do
begin
While not EndOfGame do
begin
PlayerMove;
DrawTable
Player:=3-Player; // SwitchPlayer
end;
AskForRepeat;
end;
end.
А дальше уже вот эту поеботу (StartMessage, DrawTable) распихать отдельными процедурами
Ну я понимаю что я сам возможно где-то написал ересь с точки зрения реального кодера, но хотел просто поделиться собственными ошибками юности.
За 6 месяцев отличный результат!