document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #~ WiimotePyConnect v1.5
  2. # coding=utf-8
  3. import cwiid
  4. import pylab
  5. import time
  6. import curses
  7. stdscr = curses.initscr()
  8. stdscr.refresh()
  9. curses.curs_set(0)
  10.  
  11. #Mapeos
  12. bWiimote = {8:\'A\', 4:\'B\', 2:\'1\', 1:\'2\', 16:\'-\', 4096:\'+\', 128:\'Home\', 2048:\'Up\', 1024:\'Down\', 256:\'Left\', 512:\'Right\'}
  13. fullLeds = {1:1, 2:3, 3:7, 4:15}
  14. ledsP = {1:1, 2:2, 3:4, 4:8}
  15.  
  16. thresh = 20
  17.  
  18. def main():
  19.     play = True
  20.     while play:
  21.         stdscr.clear()
  22.         #Conectar wiimotes
  23.         stdscr.addstr(\'Cuantos jugadores se conectarán? \')
  24.         c = int(stdscr.getstr())
  25.         stdscr.addstr(\'Cual es el límite? \')
  26.         l = int(stdscr.getstr())
  27.         wm = []
  28.         for i in range(c):
  29.             stdscr.addstr(\'Presione 1+2 en el Wiimote \' + str(i+1) + \'...\\n\')
  30.             stdscr.refresh()
  31.             wm.append(cwiid.Wiimote())
  32.             wm[i].rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC
  33.             wm[i].led = ledsP[(i+1)%4]
  34.             stdscr.addstr(\'Conectado\\n\')
  35.  
  36.         stdscr.addstr(\'El juego comenzará despues de que todos los jugadores presionen A\\n\')
  37.         stdscr.refresh()
  38.         start = False
  39.         ok = []
  40.         okTry = []
  41.         for i in range(c):
  42.             ok.append(False)
  43.             okTry.append(True)
  44.         while not start:
  45.             pressed = checkButtons(wm, c)
  46.             for i in range(c):
  47.                 if \'A\' in pressed[i]:
  48.                     ok[i] = True
  49.             if ok == okTry:
  50.                 start = True
  51.         stdscr.addstr(\'Preparados...\\n\')
  52.         stdscr.refresh()
  53.         time.sleep(2)
  54.         stdscr.addstr(\'Listos...\\n\')
  55.         stdscr.refresh()
  56.         time.sleep(2)
  57.         playing = True
  58.  
  59.         prev0 = []
  60.         prev1 = []
  61.         prev2 = []
  62.         points = []
  63.         prevpoints = []
  64.         loosers = []
  65.         for i in range(c):
  66.             prev0.append(0)
  67.             prev1.append(0)
  68.             prev2.append(0)
  69.             points.append(-1)
  70.             prevpoints.append(-1)
  71.         while playing:
  72.             ####Buttons pressed
  73.             pressed = checkButtons(wm, c)
  74.             ####Check movement
  75.             for i in range(c):
  76.                 if i not in loosers:
  77.                     ac0 = wm[i].state[\'acc\'][0]
  78.                     if abs(prev0[i] - ac0) > thresh:
  79.                         points[i] += 1
  80.                     prev0[i] = ac0
  81.                     ac1 = wm[i].state[\'acc\'][1]
  82.                     if abs(prev1[i] - ac1) > thresh:
  83.                         points[i] += 1
  84.                     prev1[i] = ac1
  85.                     ac2 = wm[i].state[\'acc\'][2]
  86.                     if abs(prev2[i] - ac2) > thresh:
  87.                         points[i] += 1
  88.                     prev2[i] = ac2
  89.             #####
  90.             if prevpoints != points:
  91.                 stdscr.clear()
  92.                 for i in range(c):
  93.                     if points[i] > l and i not in loosers:
  94.                         loosers.append(i)
  95.                     if i not in loosers:
  96.                         p = points[i]*100/l
  97.                         if p < 25:
  98.                             wm[i].led = fullLeds[1]
  99.                         elif p < 50:
  100.                             wm[i].led = fullLeds[2]
  101.                         elif p < 75:
  102.                             wm[i].led = fullLeds[3]
  103.                         else:
  104.                             wm[i].led = fullLeds[4]
  105.                         dis = \'[\'
  106.                         for j in range(p):
  107.                             dis += \'|\'
  108.                         for j in range(100-p):
  109.                             dis += \' \'
  110.                         dis += \']\'
  111.                         stdscr.addstr(\'Jugador \' + str(i+1) + \': \' + dis + \'\\n\')
  112.                     else:
  113.                         stdscr.addstr(\'Jugador \' + str(i+1) + \': PERDIÓ\\n\')
  114.                         wm[i].led = 0
  115.                     stdscr.refresh()
  116.                 prevpoints = points[:]
  117.             if len(loosers) == c-1:
  118.                 playing = False
  119.         for i in range(c):
  120.             if i not in loosers:
  121.                 winner = i
  122.  
  123.         stdscr.addstr(\'EL GANADOR ES EL JUGADOR \' + str(winner + 1) + \'\\n\')
  124.         stdscr.addstr(\'Mantén presionado A para volver a jugar o el B para terminar\\n\')
  125.         stdscr.refresh()
  126.        
  127.         while True:
  128.             ####Buttons pressed
  129.             pressed = checkButtons(wm, c)
  130.             ####
  131.             if \'A\' in pressed[winner]:
  132.                 break
  133.             elif \'B\' in pressed[winner]:
  134.                 play = False
  135.                 break
  136.             wm[winner].led = fullLeds[4]
  137.             wm[winner].rumble = True
  138.             time.sleep(0.5)
  139.             wm[winner].led = 0
  140.             wm[winner].rumble = False
  141.             time.sleep(0.5)
  142.  
  143. #Funciones
  144. def checkPressed(w, mapp):
  145.     buttons = w[\'buttons\']
  146.     bn = sorted(mapp.keys())
  147.     bn.reverse()
  148.     p = []
  149.     for i in bn:
  150.         if i <= buttons:
  151.             p.append(mapp[i])
  152.             buttons -= i
  153.     return p
  154.    
  155. def checkButtons(wm, c):
  156.     pressed = []
  157.     for i in range(c):
  158.         pressed.append(checkPressed(wm[i].state,bWiimote))
  159.     return pressed
  160.  
  161.  
  162.  
  163. main()
  164. curses.endwin()
');