row=0
col=0
def?__init__(self,劃,?col):
self.row=row
self.col=col
def?復制(自己):
回歸?Point(row=self.row,?col=self.col)
#初始幀
進口?pygame
進口?隨意
#初始化
pygame.init()
W=800
H=600
ROW=30
COL=40
尺寸=(寬,高)
window = py game . display . set _ mode(size)
py game . display . set _ caption(' snake ')
bg_color=(255,255,255)
snake _ color =(200200200)
head=Point(row=int(ROW/2),?col=int(COL/2))
head_color=(0,128,128)
蛇=[
Point(row=head.row,?col=head.col+1),
Point(row=head.row,?col=head.col+2),
Point(row=head.row,?col=head.col+3)
]
#生產食物
def?gen_food():
什麽時候?1:
pos=Point(row=random.randint(0,ROW-1),?col=random.randint(0,COL-1))
#
is_coll=False
#妳遇到蛇了嗎?
如果?head.row==pos.row?然後呢。head.col==pos.col:
is_coll=True
#蛇身
為了什麽?蛇?在?蛇:
如果?snake.row==pos.row?然後呢。snake.col==pos.col:
is_coll=True
破裂
如果?不是嗎?is_coll:
破裂
回歸?刷卡機
#定義坐標
food=gen_food()
food_color=(255,255,0)
direct = ' left ' #左、右、上、下
#
def?rect(點,?顏色):
單元格寬度=寬/列
cell_height=H/ROW
left = point.col *單元格寬度
top=point.row*cell_height
pygame.draw.rect(
窗口?顏色,
(左,?頂,?單元格_寬度,?單元格_高度)
)
及格
#遊戲循環
退出=真
clock=pygame.time.Clock()
什麽時候?退出:
#處理事件
為了什麽?事件?在?pygame.event.get():
如果?event.type==pygame。退出:
退出=假
埃利夫?event.type==pygame。按鍵:
如果?event.key==273?還是?event.key==119:
如果?直接== '左'?還是?direct=='right ':
直接= '向上'
埃利夫?event.key==274?還是?event.key==115:
如果?直接?==?左邊?還是?直接?==?“右”:
direct='down '
埃利夫?event.key==276?還是?event.key==97:
如果?直接?==?起來嗎?還是?直接?==?向下':
direct='left '
埃利夫?event.key==275?還是?event.key==100:
如果?直接?==?起來嗎?還是?直接?==?向下':
直接= '對'
#吃吧
吃=(head.row==food.row?然後呢。head.col==food.col)
#繁殖食物
如果?吃:
食物?=?gen_food()
#處理屍體
#1.把原來的頭插入蛇的頭部。
snakes.insert(0,head.copy())
#2.刪除最後的蛇。
如果?不是嗎?吃:
snakes.pop()
#移動
如果?direct=='left ':
head.col-=1
埃利夫?direct=='right ':
head.col+=1
埃利夫?direct=='up ':
head.row-=1
埃利夫?direct=='down ':
head.row+=1
#檢測
死亡=假
#1.突然跑不動了
如果?head.col & lt0?還是?head.row & lt0?還是?head.col & gt=COL?還是?head.row & gt=行:
死亡=真實
#2.打妳自己
為了什麽?蛇?在?蛇:
如果?head.col==snake.col?然後呢。head.row==snake.row:
死亡=真實
破裂
如果?死亡:
打印(“死”)
退出=假
#渲染-繪制它
#背景
pygame.draw.rect(window,?bg_color,?(0,0,W,H))
#蛇頭
為了什麽?蛇?在?蛇:
rect(蛇,?蛇_色)
rect(頭,頭_顏色)
rect(食物,?食物_顏色)
#
pygame.display.flip()
#設置幀速率(速度)
clock.tick(8)
#收尾工作這是壹個簡單版本的snake代碼。雖然結構簡單,但功能齊全,可玩性好。