1. Pascal / Говнокод #13792

    +130

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    Program KrestZero;
    ...
    
    procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
    
      case m[arow,acol]of
         1: DrawGrid1.Canvas.Draw(acol*81,arow*81 ,bmpkrest);
         0:  DrawGrid1.Canvas.Draw(acol*81,arow*81 ,bmpfon);
         2:  DrawGrid1.Canvas.Draw(acol*81,arow*81 ,bmpnul);
      end;
    
    
    end;
    function win:boolean;
    var a:byte;
    begin
      result:=false;
      k:=0;
      for I := 0 to 2 do
         if m[0,i]=a then k:=k+1;
      if k=3 then begin result:=true; exit; end;
        
        
    end;
    
    procedure TForm1.DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      var
      acol,arow:integer;
    begin
       DrawGrid1.MouseToCell(x,y,acol,arow);
       if (m[arow,acol]<>0) then
        ShowMessage('Нельзя!')
       else
       begin
        inc(hod);
        if hod mod 2 =1 then m[arow,acol]:=1
        else m[arow,acol]:=2;
        if win then  ShowMessage('Победа!');
        
       end;
    end;
    
    procedure TForm1.FormShow(Sender: TObject);
    var i,j:byte;
    begin
       bmpkrest:=TBitmap.Create;
       bmpkrest.LoadFromFile('krest.bmp');
       bmpfon:=TBitmap.Create;
       bmpfon.LoadFromFile('fon.bmp');
       bmpnul:=TBitmap.Create;
       bmpnul.LoadFromFile('nol.bmp');
       for i:=0 to 2 do
         for j:=0 to 2 do
          m[i,j]:=0;
       hod:=0;
    end;

    А вот так, товарищи, кодит препод в одной из шаражек в нашем родном Владикавказе.
    В коде ничего не менял - выложил, как есть.
    Одно только название - krestzero уже поднимает давление настроение.

    Запостил: Stertor, 15 Сентября 2013

    Комментарии (39) RSS

    • http://vcnmo.ru/cources-detail-predmets/programmirovanie

      http://vcnmo.ru/images/lessons/inf/krestzero.rar
      Ответить
    • Кто минусует, вы хоть объясняйте за что, иначе негламурно как-то( Так и хочется заплюсовать.
      Ответить
    • Объясни лучше, за что плюсовать?
      Не надо путать предмет "Шаблоны проектирования" с основами программирования, где цель - привлечь и заинтересовать на простых примерах.
      Ответить
      • Не дури,гость.

        function win:boolean;
        var a:byte;
        begin
          result:=false;
          k:=0;
          for I := 0 to 2 do
             if m[0,i]=a then k:=k+1;
          if k=3 then begin result:=true; exit; end;

        переменные нигде не объявлены ранее, т.е не инициализированы. Автор просто поленился лишний раз проверить исходник и выложил как есть: пошли на хуй, как хотите, так и ебитесь, #define true false
        на будущее - прежде чем что-то спезднуть, подумай.
        Ответить
        • > переменные нигде не объявлены ранее, т.е не инициализированы.
          Ну и как мы должны были об этом догадаться, если там вверху "..."?
          Ответить
          • Исходник прилагается.
            С уважением, ваш кэп
            Ответить
            • Качать архивы и копаться в залежах говна лень. Этим должен заниматься выкладывающий код на ГК, отобрав для читателей самые интересные и самодостаточные фрагменты.
              С уважением, ваш кэп.
              Ответить
              • Это был ответ на вопрос выше.

                с уважением, ваш кэп
                Ответить
                • Да, кстати. Когда я просил у совета с дельфями, я не троллил - Вы зря так думаете. Я действительно пишу прогу и скоро опубликую ее.
                  На будущее: когда я собираюсь троллить участника, я прямо его об этом предупреждаю, но строго говоря, Вам это знать незачем, Вас я никогда еще не троллил.
                  Ответить
        • >переменные нигде не объявлены ранее, т.е не инициализированы.
          >на будущее - прежде чем что-то спезднуть, подумай.
          Именно. Глобальные переменные инициализируются нулями сами, поля классов тоже.
          Ответить
    • показать все, что скрытоИщу партнёра для секса. Есть своя квартира. Анал, орал, группа. Пиши мне на [email protected]
      Ответить
      • Ага, зачем спидовать в одиночку, когда можно заразить побольше людей и спидовать хором.
        Видели.
        ...без друзей меня чуть-чуть, а с друзьями много!
        Ответить
    • показать все, что скрыто> в нашем родном Владикавказе.
      >> https://www.free-lance.ru/users/Stertor
      >>> Арсен Владикавказский

      Кажется, березняк нашел наконец-то у кого отсосать
      Ответить
      • Анкета липовая. И вообще, гость, как-то это низко с твоей стороны, тебе не кажется?
        Ответить
        • http://vk.com/video161652257_162125165
          Ответить
          • НЕ переходите по ссылке, видео не из приятных
            Два года назад видел в ргхосте.
            Так у него же на лбу нет надписи "Я кавказец". Это может быть чувак любой нации. У нас бы его уже порвали за такое.
            Ответить
            • Сажать надо таких законтаченных недолюдей. Жаль, что не при советах живем, такого попустительства бы не было.
              Ответить
              • Кто-нибудь может подсказать реализацию "корзины" на Делфи?
                Сохранять/восстанавливать нужно следующие свойства:
                имя файла, его размер и дату помещения.
                Я в принципе сделал - создается класс, который впоследствие записывается в файл с помощью tfilestream. Имя помещаемого файла - string[255], записывается так:
                stream.write(filename,sizeof(filename))
                ,
                читается так же. Но есть одно огро-о-омное "НО":
                имя файла может быть и больше 256 символов - велик риск остаться с расширенным очком, а по-другому никак не получается сохранить string. Может, кто подскажет?
                Ответить
                • > а по-другому никак не получается сохранить string
                  Ну например классическим способом - запиши сначала длину строки в виде 4-байтного инта, а затем содержимое строки. Чтение аналогично.

                  Как-то так (с поправкой на то, что я давно ничего не писал на пасцале):
                  function writeString(stream : TFileStream; s : string);
                  var len: cardinal;
                  begin
                      len := length(s);
                      stream.write(len, sizeof(cardinal));
                      stream.write(pchar(s), len);
                  end;
                  Ответить
                  • <function writeString(stream : TFileStream; s : string);
                    writeString
                    >

                    Испортила Вас сишка!! )) Сразу чувствуется матерый сишник.
                    Ответить
                    • Не, что-то не прокатывает. Я и так и так пробовал((
                      Ответить
                      • Вот какие гоатсе постят на забугорных форумаххх:
                        procedure TStreamEx.writeString(const data: string);
                        var
                           len: cardinal;
                           oString: UTF8String;
                        begin
                           oString := UTF8String(data);
                           len := length(oString);
                           self.WriteBuffer(len, 4);
                           if len > 0 then
                              self.WriteBuffer(oString[1], len);
                        end;
                        
                        function TStreamEx.readString: string;
                        var
                           len: integer;
                           iString: UTF8String;
                        begin
                           self.readBuffer(len, 4);
                           if len > 0 then
                           begin
                              setLength(iString, len);
                              self.ReadBuffer(iString[1], len);
                              result := string(iString);
                           end;
                        end;


                        Бля, я рву волосы на очке - переписать из за такой хуетени целый класс коммунистической партии, блять.
                        Ответить
                        • Надо же. Прокатило. Тока не прямо в лоб
                          stream.write(str,length(str))

                          а через анус:
                          stream.write(str,length(str)*sizeof(char))


                          В общем, Борманду респект и уважение.
                          Ответить
                      • Вот такой говнокод получился: http://ideone.com/2Lr6JI

                        Реквестирую в тред Тараса, пусть польет меня говном из ушата за этот код.
                        Ответить
                        • Ансишная строка гробит идею. А код по-моему, ничего.

                          Вот только это не понятно:
                          for i := 0 to size-1 do
                          begin
                          if (i <> 0) and ((i mod 16) = 0) then
                          WriteLn;
                          Write(IntToHex(b[i], 2), ' ');
                          end;
                          WriteLn; // нах тут writeln? Writeln же вроде печатает строку в стандартное устройство вывода??
                          Ответить
                          • Или это консолечка, я ее маму бля ебал?!
                            Ответить
                          • > Ансишная строка гробит идею
                            Ну ты можешь любую другую поюзать, хоть String, хоть WideString. Код не поменяется (хотя с вайдстрингом, если я не туплю, придется подомножать на размер символа).

                            > Или это консолечка, я ее маму бля ебал?!
                            Она самая, на ideone только консолечки запускаются. Как ты туда форму собрался засовывать? :) Да и консольки для демонстрации такой простой фигни имхо само то: меньше отвлекающего кода.

                            P.S. HexDump чисто дебажная функция, чтобы посмотреть на то, как в стрим упаковались данные. Не обращай внимания...
                            Ответить
                            • Я из-за этой же хуетени выкинул Лажаруса - теперь понимаю, что зря; Length упорно возвращал в два раза большую длину строки. Оказывается, нужно было использовать utf8-строки и делить результат на размер 1 символа (sizeof(char))
                              Вот такой я дурашка.

                              Борманд, как ты думаешь, возможно ли на этом Лажарусе что-нибудь более-менее серьезное написать? Как работать с сетью? Кроссплатформенность не интересует. Я только под винду.
                              Ответить
                              • Лажарус это же только IDE :) Вопрос равносилен "можно ли что-то написать на визуал студии?".

                                А на FPC, по идее, писать можно. Они же половину классов с делфи спиздили, да и синтаксические фишки тоже. На нем вроде как даже делфинье VCL взлетает (или его аналог, не помню).

                                Но сам я его никогда не юзал, поэтому х.з.
                                Ответить
                                • Много раз хотелось найти какую-нибудь "свою" среду разработки, освоить ее и постоянно кодить на этом языке. Бля, но сколько раз уже ошибался: то среда разработки оказывалась платной, то язык не подходящий, то приходилось трахаться с глючным компилятором.
                                  Ответить
                                  • Рекурсия - она страшная вещь, эта ваша рекурсия, мать ее.
                                    http://ideone.com/rXaUPW
                                    Ответить
                                    • http://www.cyberforum.ru/lazarus/thread655914.html, пост #4.

                                      Я к этому чунга-чанге давно присматриваюсь - кому-то он рекомендовал избежать повторного запуска программы поискав ее имя в списке процессов
                                      )
                                      Ответить

    Добавить комментарий