[*nix] My tetris on terminal
約莫期中考前吧,看到學長發RPG的文,於是也想來寫個遊戲。
想開學時重回臉書時,玩的tetris玩得還蠻爽的,於是就成為首選啦,而且Linux號稱是用來多工的,說不定也能來寫個連線版,在學校的主機上和同學來PK一下,感覺很酷,於是就動工囉。
我在linux上會使用的只有學校教半學期的C,關於文字顯示也只會一行行的,要怎麼辦呢?一位系上同學告訴了我ncurses的事(果然是高手),於是就開始google啦!
不管三七二十一,工欲善其事,必先利其器,ncurses下了再說。
sudo apt-get update
sudo apt-get install ncurses-dev
原來ncurses是curses的進化,然後我參考了這篇,整個tetris的畫面就差不多出來了。
http://www.csie.ntnu.edu.tw/~ghhwang/course_slices...
(除了#include要引入函式庫外,compiler時也要加上-lncurses喔!!)
接著嘛,要參考一下標準的tetris規則,旋轉之類的,由於有些很麻煩,所以做多少算多少囉!
http://tetris.wikia.com/wiki/SRS
做得差不多了,就差一個個方塊落下了,畫龍點睛就是這一步,看了一些函式後發現alarm好像不是很精準(好像只能到整數秒),於是採用了setitimer
http://fp-moon.iteye.com/blog/1534980
我把成果發到asciinema上
https://asciinema.org/a/1zinm7gewyniwz2qy0fb8dbdc //成果1
https://asciinema.org/a/2amo1o5kfe0fuut56qj5oym42 //成果2
最後再附個有點糟糕的程式碼
mycode: github上喔//原版 (compiler $ gcc tetris.c -lncurses)
https://mega.nz/#!MIUmmRpJ!thZg1WcWWJEyW6b2UzxV2_Q... //惡搞方塊版 (compiler $ gcc new.c -lncurses)
可能是因為windows的^M和linux的\n不合,所以在windows用記事本開會很亂XP
以上!!
下一步,用socket做出連線對戰!!
留言
張貼留言