Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #~ WiimotePyConnect v1.5
- # coding=utf-8
- import cwiid
- import pylab
- import time
- import curses
- stdscr = curses.initscr()
- stdscr.refresh()
- curses.curs_set(0)
- #Mapeos
- bWiimote = {8:'A', 4:'B', 2:'1', 1:'2', 16:'-', 4096:'+', 128:'Home', 2048:'Up', 1024:'Down', 256:'Left', 512:'Right'}
- fullLeds = {1:1, 2:3, 3:7, 4:15}
- ledsP = {1:1, 2:2, 3:4, 4:8}
- thresh = 20
- def main():
- play = True
- while play:
- stdscr.clear()
- #Conectar wiimotes
- stdscr.addstr('Cuantos jugadores se conectarán? ')
- c = int(stdscr.getstr())
- stdscr.addstr('Cual es el límite? ')
- l = int(stdscr.getstr())
- wm = []
- for i in range(c):
- stdscr.addstr('Presione 1+2 en el Wiimote ' + str(i+1) + '...\n')
- stdscr.refresh()
- wm.append(cwiid.Wiimote())
- wm[i].rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC
- wm[i].led = ledsP[(i+1)%4]
- stdscr.addstr('Conectado\n')
- stdscr.addstr('El juego comenzará despues de que todos los jugadores presionen A\n')
- stdscr.refresh()
- start = False
- ok = []
- okTry = []
- for i in range(c):
- ok.append(False)
- okTry.append(True)
- while not start:
- pressed = checkButtons(wm, c)
- for i in range(c):
- if 'A' in pressed[i]:
- ok[i] = True
- if ok == okTry:
- start = True
- stdscr.addstr('Preparados...\n')
- stdscr.refresh()
- time.sleep(2)
- stdscr.addstr('Listos...\n')
- stdscr.refresh()
- time.sleep(2)
- playing = True
- prev0 = []
- prev1 = []
- prev2 = []
- points = []
- prevpoints = []
- loosers = []
- for i in range(c):
- prev0.append(0)
- prev1.append(0)
- prev2.append(0)
- points.append(-1)
- prevpoints.append(-1)
- while playing:
- ####Buttons pressed
- pressed = checkButtons(wm, c)
- ####Check movement
- for i in range(c):
- if i not in loosers:
- ac0 = wm[i].state['acc'][0]
- if abs(prev0[i] - ac0) > thresh:
- points[i] += 1
- prev0[i] = ac0
- ac1 = wm[i].state['acc'][1]
- if abs(prev1[i] - ac1) > thresh:
- points[i] += 1
- prev1[i] = ac1
- ac2 = wm[i].state['acc'][2]
- if abs(prev2[i] - ac2) > thresh:
- points[i] += 1
- prev2[i] = ac2
- #####
- if prevpoints != points:
- stdscr.clear()
- for i in range(c):
- if points[i] > l and i not in loosers:
- loosers.append(i)
- if i not in loosers:
- p = points[i]*100/l
- if p < 25:
- wm[i].led = fullLeds[1]
- elif p < 50:
- wm[i].led = fullLeds[2]
- elif p < 75:
- wm[i].led = fullLeds[3]
- else:
- wm[i].led = fullLeds[4]
- dis = '['
- for j in range(p):
- dis += '|'
- for j in range(100-p):
- dis += ' '
- dis += ']'
- stdscr.addstr('Jugador ' + str(i+1) + ': ' + dis + '\n')
- else:
- stdscr.addstr('Jugador ' + str(i+1) + ': PERDIÓ\n')
- wm[i].led = 0
- stdscr.refresh()
- prevpoints = points[:]
- if len(loosers) == c-1:
- playing = False
- for i in range(c):
- if i not in loosers:
- winner = i
- stdscr.addstr('EL GANADOR ES EL JUGADOR ' + str(winner + 1) + '\n')
- stdscr.addstr('Mantén presionado A para volver a jugar o el B para terminar\n')
- stdscr.refresh()
- while True:
- ####Buttons pressed
- pressed = checkButtons(wm, c)
- ####
- if 'A' in pressed[winner]:
- break
- elif 'B' in pressed[winner]:
- play = False
- break
- wm[winner].led = fullLeds[4]
- wm[winner].rumble = True
- time.sleep(0.5)
- wm[winner].led = 0
- wm[winner].rumble = False
- time.sleep(0.5)
- #Funciones
- def checkPressed(w, mapp):
- buttons = w['buttons']
- bn = sorted(mapp.keys())
- bn.reverse()
- p = []
- for i in bn:
- if i <= buttons:
- p.append(mapp[i])
- buttons -= i
- return p
- def checkButtons(wm, c):
- pressed = []
- for i in range(c):
- pressed.append(checkPressed(wm[i].state,bWiimote))
- return pressed
- main()
- curses.endwin()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement