Игрите Arkanoid на 34 реда код, Snake на 26 реда, Tetris - 50

  1. http://defaultset.blogspot.com/ Това е блог, в който автора показва доста... оптимизирани игри, правени на Python: Arkanoid на 34 реда код Snake на 26 реда Tetris - 50

    Например играта Snake е писана за Python 2.6.5 (linux / text-mode), така че ще трябва да се направят някои промени (най-вече с print - в кода, той няма скоби), за да се обнови до Python 3.2.

    Има и други fun работи, можете да ги погледнете. Само е лошо, че блогът е доста кратък и далеч не всичко е за Python. :(

    P.S. В игрите се използва модула curses, а при мен Python шела казва, че той не съществува. Някой да знае защо?

    При

    import curses
    

    дава грешката (всичко долу трябва да е в червено):

    Traceback (most recent call last):
      File "<pyshell#1>", line 1, in <module>
        import curses
      File "F:\Evgeni\Tmp\Python\Python 3.2\lib\curses\__init__.py", line 15, in <module>
        from _curses import *
    ImportError: No module named _curses
    

    И защо търси _curses, а не curses не ми е ясно.

    Публикувано преди
  2. Това се случва, защото питонският модул "curses" е просто wrapper за unix-ката библиотека curses (или пък ncurses), която ти нямаш.

    Съдейки по съобщението за грешка, което си получил, си на windows. Вариантите да се сдобиеш с "curses" са няколко.

    • сложи си linux/unix на машината (или на виртуална машина)

    • cygwin или SUA

    • намери порт на curses за windows

    Най-трудно е да намериш работещ порт на curses за windows, а най-лесно вероятно ще бъде с cygwin.

    Публикувано преди
  3. А Python има ли вградени модул(и) и функции, които вършат същата работа като curses, но за Windows?

    Например за играта Snake от curses се импортва:

    from curses import initscr,curs_set,newwin,endwin,KEY_RIGHT,KEY_LEFT,KEY_DOWN,KEY_UP
    

    Или трябва да се сваля cygwin?

    Трудно ми е да повярвам, че под Windows не можеш да ползваш стрелката нагоре, примерно.

    Публикувано преди
  4. Змията е писана на curses. Това е библиотека за манипулация на конзолата. Тя обвива някаква функционалност от операционната система (най-вече тази за работа с терминал) и предлага абстракция от по-високо ниво.

    Проблема ти не е, че Windows не поддържа стрелка нагоре (очевидно). Проблема ти е, че кодът който искаш да подкараш, зависи от curses. А curses е Unix библиотека*. Ти пък си на Windows. Това, естествено е проблем, понеже Unix софтуера не върви просто ей така на Windows. Това важи с пълна сила за софтуер, който е писан преди да сме родени.

    От тук нататък имаш избор — или да подкараш симулация на *nix на твоя Windows или да си качиш някакъв Linux. Първото е cygwin. Аз ти препоръчвам второто — като млад, аспириращ студент, на който така и така ще му се наложи да учи тези неща в университета, е добра идея да се запознаеш със света на Linux по-рано.

    • Това не е съвсем вярно — ncurses е POSIX, не Unix но разликата вероятно ще ти е твърде мътна. Това не променя фактите, че (1) ще работи на Linux и (2) няма да минеш тънко на Windows.

    П.П.: Това са едни от най-гнусните 26 реда Python, които бях виждал от дълго време насам. По-натам в курса ще ви покажем как да напишете змията на около 100тина реда, но по далеч по-разбираем начин (и без curses).

    Публикувано преди
  5. Snake на 26 реда е сравнително четим. Но Snake на 15 (въпреки, че е същия код)...

    Както и да е. Блогът е интересен за това, че прави игрите по доста кратък, а не красив, начин. Освен това игрите не са... особено... Обектно ориентирани. Със сигурност може да се напише по-добре и по-четимо, макар и няколко пъти по-дълго.

    Публикувано преди
  6. Snake на 26 реда е сравнително четим.

    Не, не е.

    Публикувано преди

Трябва да сте влезли в системата, за да може да отговаряте на теми.