Mercurial > zrpn
changeset 79:502d90179d56
added click delay, updated network
| author | Szymon Wróblewski <bluex0@gmail.com> |
|---|---|
| date | Sun, 08 Jul 2012 13:02:32 +0200 |
| parents | 74ae038b52c4 |
| children | fd7545415b98 |
| files | zrpn/client.py zrpn/pygame_network/packet.py zrpn/server.py |
| diffstat | 3 files changed, 36 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/zrpn/client.py Sun Jul 08 12:01:59 2012 +0200 +++ b/zrpn/client.py Sun Jul 08 13:02:32 2012 +0200 @@ -1,18 +1,17 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import pygame import sys +import time import logging +import sgc +import pygame import pygame_network as net import display import packets -import sgc - -import time class Client(object): def __init__(self, address, port): @@ -20,13 +19,13 @@ self.connected = False self.client = net.Client() self.connection = self.client.connect(address, port) - self.lbl_time=sgc.Label(pos=(0,0),text="time\nwasted=\n0") - self.lbl_score=sgc.Label(pos=(0,70),text="score=\n0") - self.lbl_highscore = sgc.Label(pos=(0,120),text="First=\n0") + self.lbl_time = sgc.Label(pos=(0, 0), text="time\nwasted=\n0") + self.lbl_score = sgc.Label(pos=(0, 70), text="score=\n0") + self.lbl_highscore = sgc.Label(pos=(0, 120), text="First=\n0") - w=[self.lbl_time,self.lbl_score,self.lbl_highscore] - - self.container=sgc.Container((80,600),pos=(720,0),widgets=w) + w = [self.lbl_time, self.lbl_score, self.lbl_highscore] + + self.container = sgc.Container((80, 600), pos=(720, 0), widgets=w) self.container.add(0) self.start = time.time() self.x = 0 @@ -47,13 +46,13 @@ elif event.p_type == packets.ANIMATIONS: self.display.do_animations(event.packet.animations) elif event.p_type == packets.SCORE: - self.lbl_score.config(text="score=\n"+str(event.packet.score_num)) - self.lbl_highscore.config(text="first=\n"+str(event.packet.highscore)) + self.lbl_score.config(text="score=\n" + str(event.packet.score_num)) + self.lbl_highscore.config(text="first=\n" + str(event.packet.highscore)) self.client.step() t = time.time() - self.start - self.lbl_time.config(text="time\nwasted=\n"+str(round(t,5))) + self.lbl_time.config(text="time\nwasted=\n" + str(round(t, 5))) self.display.frame() - +
--- a/zrpn/pygame_network/packet.py Sun Jul 08 12:01:59 2012 +0200 +++ b/zrpn/pygame_network/packet.py Sun Jul 08 13:02:32 2012 +0200 @@ -3,15 +3,15 @@ from weakref import WeakKeyDictionary, WeakValueDictionary import enet try: - import msgpack - _packer = msgpack.Packer() - _unpacker = msgpack.Unpacker() + import msgpack as s_lib + _packer = s_lib.Packer() + _unpacker = s_lib.Unpacker() _pack = _packer.pack _unpack = lambda data: _unpacker.feed(data) or _unpacker.unpack() except ImportError: - import json - _packer = json.JSONEncoder() - _unpacker = json.JSONDecoder() + import json as s_lib + _packer = s_lib.JSONEncoder() + _unpacker = s_lib.JSONDecoder() _pack = _packer.encode _unpack = _unpacker.decode @@ -144,6 +144,7 @@ ids = cls._packet_types.keys() ids.sort() l = list() + l.append(s_lib.__name__) for i in ids: p = cls._packet_types[i] l.append((i, p.__name__, p._fields))
--- a/zrpn/server.py Sun Jul 08 12:01:59 2012 +0200 +++ b/zrpn/server.py Sun Jul 08 13:02:32 2012 +0200 @@ -1,3 +1,4 @@ +import time import logging import pygame_network as net import board @@ -6,23 +7,32 @@ class ClientReceiver(net.Receiver): scores = {} + board = board.Board() + + def __init__(self): + self.click_time = time.time() + def net_click(self, channel, packet_id, packet): - animations = self.server.board.kill_one(packet) - animations.extend(self.server.board.update()) + t = time.time() + if t - self.click_time < 1: + return + self.click_time = t + animations = self.board.kill_one(packet) + animations.extend(self.board.update()) + self.connection.net_score(self.scores[self], max(self.scores.values())) for connection in self.server.peers.values(): connection.net_animations(animations) - self.connection.net_score(self.scores[self],max(self.scores.values())) def on_connect(self): - self.connection.net_init(self.server.board.board, self.server.board.cells) - self.scores[self]=0 + self.connection.net_init(self.board.board, self.board.cells) + self.scores[self] = 0 print self.scores + class Server(object): def __init__(self, port): self.server = net.Server(port=port, connections_limit=10) self.server.receiver_cls = ClientReceiver - self.server.board = board.Board() def run(self): while True:
