|
发表于 2018-3-7 10:42:24
|
显示全部楼层
本楼为最佳答案
回帖奖励 +10 鱼币
本帖最后由 LargeCat 于 2018-3-7 11:39 编辑
你这个要做的,要花点时间做美工和设计,需要时间的。
我这里有个自己写的,去年准备用的没用,懒的弄,你可以参考一下。最好自己完善一下。
外观逻辑:
每个参与抽奖的员工提交一个自己的图片,
自己给这些图片编号1,2,3,4,,,,,
投影到大屏幕上,不停的随机位置随机出现, 闪动,(python运行了一下,效果闪的也很快,没问题,100多个人的情况下)
主持人准备一个手机当作遥控器,安装Qpython或者任何东西,这里是qpython,用于给主机电脑发送抽奖指令。抽奖嘉宾再手机遥控上按一下抽奖,大屏幕上随机给一个图片并把他放大放到一边,显示他中奖了。
按一次,抽一个人。
程序:
用了cocos2d, 手机和电脑通讯用socket,
美工需要再完善,需要再加个音效,抽奖键按下的时候出一个音效,还有背景音乐。
仅仅只是给你参考,你必须会python, 自己再改改。
只能做到这里了。
只是一个实现的参考。
今年年底的年会可能会做一个给他们用用,到时候再完善了,懒癌很严重。。。。。
电脑主机程序:
- import cocos
- import pyglet
- import random
- from cocos.actions import *
- import threading
- import socketserver
- from socketserver import StreamRequestHandler as SRH
- from time import ctime
- HOST=''
- PORT=9999
- addr=(HOST, PORT)
- signal='x'
- class Star(cocos.sprite.Sprite):
- def __init__(self, image):
- super(Star, self).__init__(image)
- self.scale=random.randint(1, 8)/10
- t1=random.randint(1, 10)/10
- t2=random.randint(1, 10)/10
- t3=random.randint(1, 10)/10
- angel=random.randint(90, 180)
- move=FadeIn(t1)+Rotate(angel, t2)+FadeOut(t3)
- self.do(Repeat(move))
- class singlePic(cocos.sprite.Sprite):
- def __init__(self, image):
- super(singlePic, self).__init__(image)
- self.scale=1
-
- class Servers(SRH):
- def handle(self):
- print('got connection from ',self.client_address)
- while True:
- global signal
- signal1 = self.request.recv(1024).decode('utf-8').strip()
- if signal1:
- print("RECV from:", self.client_address[0], ctime())
- signal=signal1
- break
- else:
- print('continue to get data...')
- class Lucky(cocos.layer.Layer):
- is_event_handler=True
- def __init__(self):
- super(Lucky, self).__init__()
- self.bkg=pyglet.resource.image('bkgrd.jpg')
- self.bkg.width=1360
- self.bkg.height=900
- self.key='AA'
- for i in range(70):
- star=Star('star.png')
- star.position=random.randint(0, 1360), random.randint(0,900)
- self.add(star)
-
- f=open(r'index.txt', 'r')
- line=f.readline().strip()
-
- self.peoples=[]
- while line:
- people=singlePic(line)
- self.add(people)
- self.peoples.append(people)
- line=f.readline().strip()
- self.schedule(self.update)
- def on_key_press(self, key, modifier): #电脑测试用的代码段
- keyname=pyglet.window.key.symbol_string(key)
- if keyname=='Q':
- self.key=keyname
- people=random.choice(self.peoples)
- self.peoples.remove(people)
- people.position=400, 400
- people.do(ScaleTo(4,2))
- def update(self, dt):
- global signal
- if str(signal)=='a':
- people=random.choice(self.peoples)
- self.peoples.remove(people)
- people.position=400, 400
- people.do(ScaleTo(4,2))
- signal='x'
- for each in self.peoples:
- each.position=random.randint(0, 1360), random.randint(0, 900)
- def draw(self):
- self.bkg.blit(0,0)
- if __name__=='__main__':
- server = socketserver.ThreadingTCPServer(addr,Servers)
- server_thread = threading.Thread(target=server.serve_forever)
- server_thread.setDaemon(True)
- server_thread.start()
-
- cocos.director.director.init(width=1360, height=900)
- scene=cocos.scene.Scene(Lucky())
- cocos.director.director.run(scene)
复制代码
手机QPYTHON端控制程序 (其实任何能SOCKET发送指令信号的程序APP都行)
- import androidhelper
- from socket import *
- droid = androidhelper.Android()
- def vibrate():
- result = droid.vibrate()
- return result.error is None
- def lucky():
- title = '抽奖'
- message = ('Click to Run it.')
- droid.dialogCreateAlert(title, message)
- droid.dialogSetPositiveButtonText('Run')
- droid.dialogShow()
- response = droid.dialogGetResponse().result
-
- host = '192.168.43.41' #查查你电脑主机的ip,修改成主机ip,手机和电脑在同一个局域网wifi下最好了。
- port = 9999
- addr = (host,port)
- client = socket(AF_INET,SOCK_STREAM)
- client.connect(addr)
- client.send(bytes('a\r\n', encoding='utf8'))
- client.close()
- vibrate()
- return True
- if __name__ == '__main__':
- while True:
- lucky()
复制代码
一些图片附件:
|
|