def __init__(self, animations, velocity=Vector(0, 0), center_of_gravity=Coordinates(0, 0), mass=0.02):
     GameObject.__init__(self, animations)
     self.velocity = velocity
     self.mass = mass
     self.hit_exceptions = []
     self.type_exceptions = ['shootable']
     self.center_of_gravity = center_of_gravity
     self.thread = Thread(self.run, (), 'projectile thread')
示例#2
0
 def __init__(self):
     Frame.scale = Settings.frame_dimensions / Coordinates(800, 600)
     pygame.init()
     logo = pygame.image.load('resources/frame_kit/logo.png')
     pygame.event.set_grab(Settings.mouse_confined)
     pygame.display.set_icon(logo)
     pygame.display.set_caption('Game')
     Frame.screen = pygame.display.set_mode(Settings.frame_dimensions.get(),
                                            Frame.flags)
     self.fps_clock = pygame.time.Clock()
     self.fps_counter = Label('0', 30, (0, 255, 0))
     self.thread = Thread(self.run, (), 'frame')
class Projectile(GameObject):

    def __init__(self, animations, velocity=Vector(0, 0), center_of_gravity=Coordinates(0, 0), mass=0.02):
        GameObject.__init__(self, animations)
        self.velocity = velocity
        self.mass = mass
        self.hit_exceptions = []
        self.type_exceptions = ['shootable']
        self.center_of_gravity = center_of_gravity
        self.thread = Thread(self.run, (), 'projectile thread')

    def run(self):
        self.move()

    def move(self):
        if not thread_lock.pause_main:
            dt = 1 / target_fps
            a = self.gravity()
            additional_coordinates = self.velocity * dt + a * (dt ** 2 / 2)
            c = self.check_collision(additional_coordinates, self.hit_exceptions, self.type_exceptions)
            if c is None:
                self.reposition(self.get_coordinates() + additional_coordinates)
                self.velocity += a * dt
            else:
                c.hit()
                self.world_remove()
                self.thread.stop()

    def gravity(self):
        v = Vector(0, 0)
        for field in World.gravity_fields:
            v += self.newton_g(field)
        return v

    def get_center_of_gravity(self):
        return self.coordinates + self.center_of_gravity * Frame.scale

    def newton_g(self, field):
        r = Vector(field.get_center_of_gravity() - self.get_center_of_gravity())
        return r * (self.mass * field.mass / abs(r) ** 3 * constants.G)
示例#4
0
def listThreads(request):
    forum = request.GET.get('forum')
    since = request.GET.get('since')
    limit = request.GET.get('limit')
    order = request.GET.get('order')
    related = request.GET.getlist('related')
    sql = "SELECT * from Thread "
    sql += "where forum='%s' " % forum
    if since is not None:
        sql += "and date>='%s' " % since
    if order is not None:
        if order == "asc":
            sql += "order by date ASC "
        else:
            sql += "order by date DESC "
    if limit is not None:
        sql += "limit %s" % limit
    result = sql_select(sql)
    if result == ():
        resp = {"code": 0, "response": []}
        resp = json.dumps(resp)
        return HttpResponse(resp, content_type="application/json")
    threads = []
    if "forum" in related:
        forum = ForumManager.get(forum)
    for data in result:
        params = {'forum': data[1], 'user': data[2], 'title': data[3], 'message': data[4], 'slug': data[5],
                  'date': data[6].strftime("%Y-%m-%d %H:%M:%S"), 'isClosed': data[7], 'isDeleted': data[8]}
        thread = Thread(params)
        thread.id = data[0]
        thread.likes = data[9]
        thread.dislikes = data[10]
        thread.posts = data[11]
        thread.points = thread.likes - thread.dislikes
        serialized_thread = thread.serialize()
        if "user" in related:
            user = UserManager.get(thread.user)
            serialized_thread["user"] = user.serialize()
        if "forum" in related:
            serialized_thread["forum"] = forum.serialize()
        threads.append(serialized_thread)
    resp = {"code": 0, "response": threads}
    resp = json.dumps(resp)
    return HttpResponse(resp, content_type="application/json")
示例#5
0
def list(request):
    user = request.GET.get('user')
    if user == None:
        forum = request.GET.get('forum')
    since = request.GET.get('since')
    limit = request.GET.get('limit')
    order = request.GET.get('order')
    sql = "SELECT * from Thread where 1=1 "
    if user != None:
        sql += "and user='******' " % user
    else:
        sql += "and forum='%s' " % forum
    if since != None:
        sql += "and date>'%s' " % since
    if order != None:
        if order == "asc":
            sql += "order by date ASC "
        else:
            sql += "order by date DESC "
    if limit != None:
        sql += "limit %s" % limit
    result = sql_select(sql)
    threads = []
    for data in result:
        params = {'forum': data[1], 'user': data[2], 'title': data[3], 'message': data[4], 'slug': data[5],
                  'date': data[6].strftime("%Y-%m-%d %H:%M:%S"), 'isClosed': data[7], 'isDeleted': data[8]}
        thread = Thread(params)
        thread.id = data[0]
        thread.likes = data[9]
        thread.dislikes = data[10]
        thread.posts = data[11]
        thread.points = thread.likes - thread.dislikes
        threads.append(thread.serialize())
    resp = {"code": 0, "response": threads}
    resp = json.dumps(resp)
    return HttpResponse(resp, content_type="application/json")
示例#6
0
def listPosts(request):
    forum = request.GET.get('forum')
    since = request.GET.get('since')
    limit = request.GET.get('limit')
    order = request.GET.get('order')
    related = request.GET.getlist('related')
    sql = "SELECT * from Post "
    if "thread" in related:
        sql += "join Thread on Post.thread=Thread.id "
    sql += "where Post.forum='%s' " % forum
    if since is not None:
        sql += "and Post.date>='%s' " % since
    if order is not None:
        if order == "asc":
            sql += "order by Post.date ASC "
        else:
            sql += "order by Post.date DESC "
    if limit is not None:
        sql += "limit %s" % limit
    result = sql_select(sql)
    if result == ():
        resp = {"code": 0, "response": []}
        resp = json.dumps(resp)
        return HttpResponse(resp, content_type="application/json")
    resultset = []
    if "forum" in related:
        forum = ForumManager.get(forum)
    for data in result:
        params = {'user': data[1],
                  'thread': data[2],
                  'forum': data[3],
                  'date': data[4].strftime("%Y-%m-%d %H:%M:%S"),
                  'message': data[5],
                  'isApproved': data[6],
                  'isHighlighted': data[7],
                  'isEdited': data[8],
                  'isSpam': data[9],
                  'isDeleted': data[10],
                  }
        post = Post(params)
        post.id = data[0]
        post.likes = data[11]
        post.dislikes = data[12]
        post.points = post.likes - post.dislikes
        post.parent = Converter.from_hex_to_dec(data[13][-10:-5]) if data[13] != Converter.from_dec_to_hex(
                int(post.id)) else None
        serialized_post = post.serialize()
        if "thread" in related:
            params = {'forum': data[17], 'user': data[18], 'title': data[19], 'message': data[20], 'slug': data[21],
                      'date': data[22].strftime("%Y-%m-%d %H:%M:%S"), 'isClosed': data[23], 'isDeleted': data[24]}
            thread = Thread(params)
            thread.id = data[16]
            thread.likes = data[25]
            thread.dislikes = data[26]
            thread.posts = data[27]
            thread.points = thread.likes - thread.dislikes
            serialized_post["thread"] = thread.serialize()
        if "user" in related:
            user = UserManager.get(post.user)
            serialized_post["user"] = user.serialize()
        if "forum" in related:
            serialized_post["forum"] = forum.serialize()
        resultset.append(serialized_post)
    resp = {"code": 0, "response": resultset}
    resp = json.dumps(resp)
    return HttpResponse(resp, content_type="application/json")