Beispiel #1
0
class Pearl(object):
    def __init__(self,pos):
        self.img_url = "https://raw.githubusercontent.com/CougarTasker/twenty-four/master/proto/images/pearl.png"
        self.row = 3
        self.column = 3
        self.img = simplegui.load_image(self.img_url)
        self.bdim = Vector(self.img.get_width(),self.img.get_height())
        self.adim = (self.bdim.x/self.column, self.bdim.y/self.row)
        self.center = Vector(self.adim[0]/2, self.adim[1]/2)
        self.pos = pos
        self.ratio = 0.2
        self.frame_index = [1,1]
        self.count = 0
        self.order = True
    def draw_canvas(self,canvas):
        self.count += 1
        if self.count % 10 == 0:
            self.frame_index = self.next_frame()
        canvas.draw_image(self.img,(self.center.get_p()[0]*(2*self.frame_index[1]-1),self.center.get_p()[1]*(2*self.frame_index[0]-1)),self.adim,self.pos.get_p(),(self.adim[0]*self.ratio,self.adim[1]*self.ratio))
    def next_frame(self):
        if self.order:
            self.frame_index[1] += 1
            if self.frame_index[1] > self.column:
                self.frame_index[0] += 1
                self.frame_index[1] = 1
        else:
            self.frame_index[1] -= 1
            if self.frame_index[1] == 0:
                self.frame_index[0]-=1
                self.frame_index[1] = self.column
        if self.frame_index == [3,3]:
            self.order = False
        elif self.frame_index == [1,1]:
            self.order = True
        return self.frame_index
Beispiel #2
0
class bubblesheet(object):
    
    def __init__(self,pos):
        self.img_url = "https://raw.githubusercontent.com/CougarTasker/twenty-four/master/proto/images/Bubble1.png"
        self.row = 5
        self.column = 6
        self.img = simplegui.load_image(self.img_url)
        self.bdim = Vector(self.img.get_width(),self.img.get_height())
        self.adim = (self.bdim.x/self.column, self.bdim.y/self.row)
        self.center = Vector(self.adim[0]/2, self.adim[1]/2)
        self.pos = pos
        self.ratio = 0.15
        self.frame_index = [1,1]
        self.count = 0
    def draw_canvas(self,canvas):
        self.count += 1
        if self.count % 1 == 0:
            self.frame_index = self.next_frame()
        canvas.draw_image(self.img,(self.center.get_p()[0]*(2*self.frame_index[1]-1),self.center.get_p()[1]*(2*self.frame_index[0]-1)),self.adim,self.pos.get_p(),(self.adim[0]*self.ratio,self.adim[1]*self.ratio))
    def next_frame(self):
        self.frame_index[1] += 1
        if self.frame_index[1] > self.column:
            self.frame_index[0] += 1
            self.frame_index[1] = 1
        if self.frame_index[0] > self.row:
            self.frame_index = [1,1]
        return self.frame_index
Beispiel #3
0
class morebubble(object):
    def __init__(self, pos):
        self.img_url = "bubble2.png"
        self.row = 5
        self.column = 15
        self.img = simplegui.load_image(self.img_url)
        self.bdim = Vector(self.img.get_width(), self.img.get_height())
        self.adim = (self.bdim.x / self.column, self.bdim.y / self.row)
        self.center = Vector(self.adim[0] / 2, self.adim[1] / 2)
        self.pos = pos
        self.ratio = 0.1
        self.frame_index = [1, 0]
        self.count = 0

    def draw_canvas(self, canvas):
        self.count += 1
        if self.count % 5 == 0:
            self.frame_index = self.next_frame()
        canvas.draw_image(
            self.img, (self.center.get_p()[0] * (2 * self.frame_index[1] - 1),
                       self.center.get_p()[1] * (2 * self.frame_index[0] - 1)),
            self.adim, self.pos.get_p(),
            (self.adim[0] * self.ratio, self.adim[1] * self.ratio))

    def next_frame(self):
        if self.frame_index[1] > self.column:
            self.frame_index[0] += 1
            self.frame_index[1] = 1
        if self.frame_index[0] > self.row:
            self.frame_index = [1, 0]
        self.frame_index[1] += 1
        return self.frame_index
Beispiel #4
0
class Score:
    def __init__(self, time, dim, die, frame):
        self.score = 0
        self.time = time
        self.maxtime = 99.999
        self.starttime = self.time.time()
        self.scoreh = 30
        self.timeh = 20
        self.padding = 5
        self.size = Vector(
            frame.get_canvas_textwidth("Score: " + '{:04d}'.format(self.score),
                                       self.scoreh, "sans-serif") +
            self.padding * 2, self.padding * 2 + self.scoreh + self.timeh)
        self.pos = Vector(((Vector(dim[0], dim[1]) - self.size) / 2).x, 0)

        #reference to overlay class for if game ends
        self.die = die
        self.sound = Snd(self.time, "point.ogg", 0.5)

    def timeleft(self):
        t = self.maxtime - (self.time.time() - self.starttime)
        #checks if any time left and otherwise sets time to zero to avoid negative
        if t <= 0:
            t = 0
            self.die.gameOver()
        #when timer reaches zero self.die.gameover calls the method in overlay to change to gameover state

        #return time left to user
        return t

    #set score to zero when user restarts
    def resetScore(self):
        self.score = 0

    #score goes up when fish caught
    def incScore(self, score):
        self.sound.play()
        self.score += score

    #draw score and time to screen
    def draw(self, canvas):
        canvas.draw_polygon(
            (self.pos.get_p(), (self.pos + self.size.x * Vector(1, 0)).get_p(),
             (self.pos + self.size).get_p(),
             (self.pos + self.size.y * Vector(0, 1)).get_p()), 1,
            "rgba(255,255,255,0)", "rgba(50,50,50,0.7)")
        canvas.draw_text("Score: " + '{:04d}'.format(self.score),
                         (self.pos +
                          Vector(self.padding, self.scoreh)).get_p(),
                         self.scoreh, "orange", "sans-serif")
        canvas.draw_text("Time: " + '{:02.3f}'.format(self.timeleft()),
                         (self.pos +
                          Vector(self.padding, self.scoreh + self.padding +
                                 self.timeh)).get_p(), 25, "yellow",
                         "sans-serif")
Beispiel #5
0
class Player:
    def __init__(self, dimensions, time):
        self.time = time
        self.lastFrameTime = self.time.time()
        self.canvas_dim = dimensions

        #address needed to gain local directory to access images folder below
        addr = os.getcwd()

        ##image info + dimensions (constants)
        self.img = simplegui.load_image("file:///" + addr +
                                        "/images/boat2.png")
        self.dim = (4096, 4096)
        self.cen = (self.dim[0] / 2, self.dim[1] / 2)
        self.draw_dim = (140, 160)
        self.y_offset = 80

        ##player position and velocity
        self.pos = Vector(
            self.draw_dim[0] / 2,
            self.draw_dim[1] / 5 + self.canvas_dim[1] * 0.3 - self.y_offset)
        self.vel = Vector(0, 0)

    def getPos(self):
        return self.pos

    def setPos(self, newPos):
        self.pos = newPos

    def getVel(self):
        return self.vel

    #setter for velocity not needed, so replaced by add velocity method
    def addVel(self, velocity):
        self.vel.add(velocity)

    #updates position based on velocity and frame rate
    def update(self):
        delta = self.time.time() - self.lastFrameTime
        self.lastFrameTime = self.time.time()
        self.pos.add(self.vel * delta)
        self.vel.multiply(0.85)

    #checks whether the user is within the horizontal bounds of the screen
    def inBounds(self):
        return ((self.draw_dim[0] / 2 <= self.pos.x)
                and (self.canvas_dim[0] - self.draw_dim[0] / 2 >= self.pos.x))

#sets users positions when they are reaching outer bounds

    def set(self):
        self.vel *= -1
        if (self.pos.get_p()[0] < self.canvas_dim[0] / 2):
            self.pos = Vector(self.draw_dim[0] / 2 + 1, self.pos.y)
        else:
            self.pos = Vector(self.canvas_dim[0] - self.draw_dim[0] / 2 - 1,
                              self.pos.y)

#draws player ship sprite to canvas

    def draw(self, canvas):
        canvas.draw_image(self.img, self.cen, self.dim, self.pos.get_p(),
                          self.draw_dim)