pygame 簡(jiǎn)易貪吃蛇實(shí)現(xiàn)

最近想用動(dòng)手51單片機(jī)做個(gè)貪吃??的游戲機(jī),發(fā)現(xiàn)沒有思路索用python實(shí)現(xiàn)了一把(日常摸魚)践美,關(guān)于51貪吃蛇游戲機(jī)的事日后在更新

代碼

import pygame,random

from pygame.locals import *
class Point:
    row =0
    col = 0
    def __init__(self,row,col):
        self.row=row
        self.col=col
    def  copy(self):
        return Point(row=self.row,col=self.col)
import pygame,random
#初始化
pygame.init()
W=800
H=600
ROW=30
COL=40
size=(W,H)
window = pygame.display.set_mode(size)
pygame.display.set_caption('貪吃蛇')

head = Point(row=int(ROW/2),col=int(COL/2))
snacks=[
    Point(row=head.row,col=head.col+1),
    Point(row=head.row,col=head.col+2),
    Point(row=head.row,col=head.col+3)
]
#生成food
def gen_food():
    while 1:
        pos =Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1))
        is_coll=False
        #是否碰上??
        if head.col==pos.col and head.row==pos.row:
            is_coll=True
        for snack in snacks:
            if snack.col==pos.col and snack.row == pos.row:
                is_coll=True
                break
        if not  is_coll:
            break
    return pos


#定義坐標(biāo)

food = gen_food()
head_color=(228,0,0)
food_color= (255,225,0)
snack_color=(128,128,128)
direct='left'

#畫
def rect(point,color):
    cell_width=W/COL
    cell_hight=H/ROW
    left=point.col*cell_width
    top =point.row*cell_hight
    pygame.draw.rect(window,color,(left,top,cell_width,cell_hight),0)


#游戲循環(huán)
quit = True
clock = pygame.time.Clock()
while quit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quit=False
        if event.type ==pygame.KEYDOWN :
            if event.key == pygame.K_LEFT:
                if direct=='up' or direct=='down':
                    direct='left'
            if event.key == pygame.K_RIGHT:
                if direct == 'up' or direct == 'down':
                    direct = 'right'
            if event.key == pygame.K_DOWN:
                if direct == 'left' or direct == 'right':
                    direct = 'down'
            if event.key == pygame.K_UP:
                if direct == 'left' or direct == 'right':
                    direct = 'up'
#吃東西
    eat=(head.row==food.row and head.col==food.col)
#處理身子
# 1.把原來的頭插到snack頭上
    snacks.insert(0,head.copy())
#2.刪掉snacks最后一個(gè)
    if not eat:
        snacks.pop()
    if eat:
        food = gen_food()



#移動(dòng)??

    if direct=='left':
        head.col-=1
    elif direct=='right':
        head.col+=1
    elif direct=='up':
        head.row-=1
    elif direct=="down":
        head.row+=1
    #檢測(cè)是否死了
    dead=False
    if head.row<0 or head.row>=ROW or head.col<0 or head.col>=COL:
        dead=True

     #撞自己
    for snack in snacks:
        if head.row==snack.row and snack.col==head.col:
            dead=True
            print('defefefd')
            break
    if dead==True:
        print("死了")
        quit=False
    #渲染——畫出來

    pygame.draw.rect(window,(255,255,255),(0,0,W,H))#背景
    #畫蛇頭
    rect(head,head_color)
    rect(food,food_color)
    #畫出蛇的身體
    for snack in snacks:
        rect(snack,snack_color)
    # 讓出控制權(quán)
    pygame.display.flip()
    #設(shè)置幀頻
    clock.tick(10)

運(yùn)行結(jié)果:


貪吃蛇.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末躁垛,一起剝皮案震驚了整個(gè)濱河市张惹,隨后出現(xiàn)的幾起案子芋肠,更是在濱河造成了極大的恐慌列吼,老刑警劉巖幽崩,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異寞钥,居然都是意外死亡慌申,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門理郑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹄溉,“玉大人咨油,你說我怎么就攤上這事∑饩簦” “怎么了役电?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棉胀。 經(jīng)常有香客問我法瑟,道長,這世上最難降的妖魔是什么膏蚓? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任瓢谢,我火速辦了婚禮,結(jié)果婚禮上驮瞧,老公的妹妹穿的比我還像新娘氓扛。我一直安慰自己,他們只是感情好论笔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布采郎。 她就那樣靜靜地躺著,像睡著了一般狂魔。 火紅的嫁衣襯著肌膚如雪蒜埋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天最楷,我揣著相機(jī)與錄音整份,去河邊找鬼。 笑死籽孙,一個(gè)胖子當(dāng)著我的面吹牛烈评,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播犯建,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讲冠,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了适瓦?” 一聲冷哼從身側(cè)響起竿开,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎玻熙,沒想到半個(gè)月后否彩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揭芍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年胳搞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片称杨。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡肌毅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姑原,到底是詐尸還是另有隱情悬而,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布锭汛,位于F島的核電站笨奠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏唤殴。R本人自食惡果不足惜般婆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朵逝。 院中可真熱鬧蔚袍,春花似錦、人聲如沸配名。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渠脉。三九已至宇整,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芋膘,已是汗流浹背鳞青。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留为朋,地道東北人臂拓。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像潜腻,于是被迫代替她去往敵國和親埃儿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 記得有人曾經(jīng)和我交流過一個(gè)話題融涣,認(rèn)為我走路有點(diǎn)快童番,有點(diǎn)跟不上的感覺。是這樣嗎威鹿?也許是吧剃斧。再細(xì)細(xì)想想,到底是什么原因...
    小新哥微課堂閱讀 387評(píng)論 0 0
  • 《無名之輩》看完了忽你,又是一個(gè)費(fèi)紙的電影幼东,可能就是那種市井的小人物的故事才讓我們覺得真實(shí)吧。 搶匪,保安根蟹,殘廢脓杉,這些...
    唐公子1閱讀 232評(píng)論 0 0