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: