python for andriod_python for andriod

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

现在市面上的andriod APP都是Java 和OC的写的,作为python的爱好者,怎么甘心了。所以我想自己写了个简单的android APP (with python)附上代码。希望有共同的python for android同学 联系我 一起学习共同进步 。。。

main.py

from kivy.app import App

from kivy.uix.widget import Widget

from kivy.uix.gridlayout import GridLayout

from kivy.properties import ObjectProperty

from kivy.clock import Clock

import random

last_pos='00'

t=1

same_num_list=[]

global l1

class mywidget(Widget):

b11=ObjectProperty()

b12=ObjectProperty()

b21=ObjectProperty()

b22=ObjectProperty()

def on_touch_down(self,touch):

global last_pos

global t

global same_num_list

new_pos=self.where_you_touch(touch.spos)

if new_pos in same_num_list:

pass

else:

if t%2!=0:

self.ids['bt'+new_pos].text=self.pos_to_num(new_pos)

self.ids['bt'+new_pos].background_color=1,0,0,1

self.ids['bt'+new_pos].font_size=150

else:

same=self.same_or_not(last_pos,new_pos)

if same:

self.ids['bt'+new_pos].text=self.pos_to_num(new_pos)

self.ids['bt'+new_pos].background_color=1,0,0,1

self.ids['bt'+new_pos].font_size=150

same_num_list.append(last_pos)

same_num_list.append(new_pos)

else:

self.ids['bt'+last_pos].text=' '

self.ids['bt'+last_pos].background_color=1,1,1,1

self.ids['bt'+new_pos].text=' '

self.ids['bt'+new_pos].background_color=1,1,1,1

last_pos=new_pos

t+=1

def pos_to_num(self,pos):

p1,p2=int(pos[0]),int(pos[1])

pid=(p1-1)*4+p2-1

res=str(b[pid])

return res

def same_or_not(self,l,n):

last=self.pos_to_num(l)

now=self.pos_to_num(n)

if last==now:

return True

else:

return False

def on_touch_up(self,touch):

pos=self.where_you_touch(touch.spos)

self.ids['bt'+pos].font_size=150

def where_you_touch(self,pos):

pos_x,pos_y=4-int(pos[1]*100)/25,1+int(pos[0]*100)/25

a=str(pos_x)+str(pos_y)

return a

def add_nums(self):

b=range(1,9)

c=range(1,9)

random.shuffle(b)

random.shuffle(c)

b.extend(c)

global b

for i in range(1,5):

for j in range(1,5):

ij=str(i)+str(j)

self.ids['bt'+ij].text=str(b[((i-1)*4+(j-1))])

self.ids['bt'+ij].font_size=150

def clear_nums(self,dt):

for i in range(1,5):

for j in range(1,5):

ij=str(i)+str(j)

self.ids['bt'+ij].text=' '

class Myapp(App):

def build(self):

my=mywidget()

my.add_nums()

Clock.schedule_once(my.clear_nums,5)

return my

if __name__=='__main__':

Myapp().run()

'my.kv'

b11:bt11

b12:bt12

b13:bt13

b14:bt14

b21:bt21

b22:bt22

b23:bt23

b24:bt24

b31:bt31

b32:bt32

b33:bt33

b34:bt34

b41:bt41

b42:bt42

b43:bt43

b44:bt44

GridLayout

pos:root.pos

size:root.size

canvas:

Rectangle:

pos:self.pos

size:self.size

cols:4

Button:

id:bt11

Button:

id:bt12

Button:

id:bt13

Button:

id:bt14

Button:

id:bt21

Button:

id:bt22

Button:

id:bt23

Button:

id:bt24

Button:

id:bt31

Button:

id:bt32

Button:

id:bt33

Button:

id:bt34

Button:

id:bt41

Button:

id:bt42

Button:

id:bt43

Button:

id:bt44

main.py 和 my.kv保存在一个目录下就可以运行了 。这是个记数字的游戏。手机里装了qpython也可以直接运行这段程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值