我正在学习一门名为Python游戏开发的课程™ : 构建11个总游戏。这是我运行代码时的样子:
但当我运行它时,它没有显示任何内容。这是我的代码:
import collections
import math
import os
def path(filename):
filepath = os.path.realpath(__file__)
dirpath = os.path.dirname(filepath)
fullpath = os.path.join(dirpath,filename)
return fullpath
def line(a,b,x,y):
import turtle
turtle.up()
turtle.goto(a,b)
turtle.down()
turtle.goto(x,y)
class vector(collections.Sequence):
PRECISION = 6
__slots__ = ('_x','_y','_hash')
def __init__(self,x,y):
self._hash = None
self._x = round(x,self.PRECISION)
self._y = round(y,self.PRECISION)
@property
#getter
def x(self):
return self._x
@x.setter
def x(self,value):
if self._hash is not None:
raise ValueError('Cannot set x after hashing')
self._x = round(value,self.PRECISION)
@property
def y(self):
return self._y
@y.setter
def y(self,value):
if self._hash is not None:
raise ValueError('Cannot set y after hashing')
self._y = round(value,self.PRECISION)
def __hash__(self):
if self._hash is None:
pair = (self.x,self.y)
self._hash = hash(pair)
return self._hash
def __len__(self):
return 2
def __getitem__(self,index):
if index == 0:
return self.x
elif index == 1:
return self.y
else:
raise IndexError
def copy(self):
type_self = type(self)
return type_self(self.x,self.y)
def __eq__(self,other):
if isinstance(other,vector):
return self.x == other.x and self.y == other.y
return NotImplemented
def __ne__(self,other):
if isinstance(other,vector):
return self.x != other.x and self.y != other.y
return NotImplemented
def __iadd__(self,other):
#v.__iadd__(w) -> v += w
if self._hash is not None:
raise ValueError('Cannot add vector after hashing')
elif isinstance(other,vector):
self.x += other.x
self.y += other.y
else:
self.x += other
self.y += other
return self
def __add__(self,other):
#v.__iadd__(w) -> v + w
copy = self.copy()
return copy.__iadd__(other)
__radd__ = __add__
def move (self,other):
#move vector by other (n place)
#v = vector(1,2) w = vector(3,4) v.move(w) v ==> vector(4,6)
self.__iadd__(other)
def __isub(self,other):
#v.__isub__(w) -> v -= w
if self._hash is not None:
raise ValueError('Cannot subtract vector after hashing')
elif isinstance(other,vector):
self.x -= other.x
self.y -= other.y
else:
self.x -= other
self.y -= other
return self
def __sub__(self,other):
#v.__sub__(w) -> w - w
copy = self.copy()
return copy.__isub__(other)
def __imul__(self,other):
#v.__imul__(w) => v*= w
if self._hash is not None:
raise ValueError('Cannot Multiply vector after hashing')
elif isinstance(other,vector):
self.x *= other.x
self.y *= other.y
else:
self.x *= other
self.y *= other
return self
def __mul__(self,other):
#v.__mul__(w) => v * w
copy = self.copy()
return copy.__imul__(other)
__rmul__ = __mul__
def scale(self,other):
self.__imul__(other)
def __itruediv__(self,other):
#v.__itruediv__(w) => v/= w
if self._hash is not None:
raise ValueError('Cannot divide vector after hashing')
elif isinstance(other,vector):
self.x /= other.x
self.y /= other.y
else:
self.x /= other
self.y /= other
return self
def __truediv__(self,other):
#v.__truediv__(w) => v / w
copy = self.copy()
return copy.__itruediv__(other)
def __neg__(self):
#v.__neg__() -> -v
copy = self.copy()
copy.x = -copy.x
copy.y = -copy.y
return copy
def __abs__(self):
#vector(3,4) => 5
return (self.x**2+self.y**2)**0.5
def rotate(self,angle):
if self._hash is not None:
raise ValueError('cannot rotate vector after hashing')
radians = angle*math.pi/180.0
cosine = math.cos(radians)
sine = math.sin(radians)
x = self.x
y = self.y
self.x = x*cosine - y*sine
self.y = y*cosine + x*sine
def __repr__(self):
#v.__repr__() => repr(v)
type_self = type(self)
name = type_self.__name__
return '{} ({!r},{!r})'.format(name,self.x,self.y)
这是我的另一个代码
from random import *
from turtle import *
from base import vector
ant = vector(0,0)
aim = vector(2,0)
def wrap(value):
return value
def draw ():
ant.move(aim)
ant.x = wrap(ant.x)
ant.y = wrap(ant.y)
aim.move(random() - 0.5)
aim.rotate(random*10 -5)
clear()
goto(ant.x,ant.y)
dot(4)
if running:
ontimer(draw,100)
setup(420,420,370,0)
hideturtle()
tracer(False)
up()
running = True
draw()
done()
当我运行它时,它没有显示任何内容。我该如何修复?请帮帮我!非常感谢。
尝试:
重做代码并对其进行研究,但没有奏效。我还应该尝试什么?