设计一款面向对象的贪吃蛇游戏 要求(1)创建Pingguo类 (对象的坐标属性,颜色属性,绘制苹果draw方法) (2)创建Snake类(继承Pingguo类)(包含列表属性,颜色属性,蛇的初始移动偏量属性【重写初始化方法】,绘制蛇draw方法【方法重写,同时调用父类draw方法】, 蛇的移动move方法, 蛇方向的改变change方法)
时间: 2024-02-17 18:00:24 浏览: 168
好的,我可以为您解答这个问题。
首先,我们需要先了解一下面向对象的概念。面向对象编程(Object Oriented Programming)是一种编程范式,它将数据和操作数据的方法封装在一起,使其成为一个独立的对象。在面向对象的编程中,对象是基本的运作单元,每个对象都有自己的属性和方法。
接下来,我们来设计一款面向对象的贪吃蛇游戏。首先,我们需要创建一个 Pingguo 类,它包含对象的坐标属性、颜色属性和绘制苹果的 draw 方法。代码如下:
```python
import pygame
class Pingguo:
def __init__(self, x, y, color):
self.x = x
self.y = y
self.color = color
def draw(self, surface, block_size):
pygame.draw.rect(surface, self.color, pygame.Rect(self.x*block_size, self.y*block_size, block_size, block_size))
```
接着,我们需要创建一个 Snake 类,它继承 Pingguo 类,并包含列表属性、颜色属性、蛇的初始移动偏量属性(重写初始化方法)、绘制蛇(方法重写,同时调用父类 draw 方法)、蛇的移动(move 方法)和蛇方向的改变(change 方法)。代码如下:
```python
class Snake(Pingguo):
def __init__(self, x, y, color):
super().__init__(x, y, color)
self.body = [(x, y), (x-1, y), (x-2, y)]
self.color = color
self.direction = 'right'
def draw(self, surface, block_size):
for block in self.body:
pygame.draw.rect(surface, self.color, pygame.Rect(block[0]*block_size, block[1]*block_size, block_size, block_size))
def move(self):
if self.direction == 'up':
new_block = (self.body[0][0], self.body[0][1]-1)
elif self.direction == 'down':
new_block = (self.body[0][0], self.body[0][1]+1)
elif self.direction == 'left':
new_block = (self.body[0][0]-1, self.body[0][1])
elif self.direction == 'right':
new_block = (self.body[0][0]+1, self.body[0][1])
self.body.insert(0, new_block)
self.body.pop()
def change_direction(self, direction):
if direction == 'up' and self.direction != 'down':
self.direction = 'up'
elif direction == 'down' and self.direction != 'up':
self.direction = 'down'
elif direction == 'left' and self.direction != 'right':
self.direction = 'left'
elif direction == 'right' and self.direction != 'left':
self.direction = 'right'
```
以上就是一款简单的面向对象的贪吃蛇游戏的设计,您可以根据自己的需求进行修改。
阅读全文