pygame学习笔记
pygame参考文档pdf版:pygame API
html版 pygame API
石头剪子布的简单小游戏,待改进的地方,自适应大小.感兴趣的小伙伴可以依据get_surface()返回值(即当前窗口大小比率)来确定.
#!/usr/bin/env python
import sys
import os
import pygame
from pygame import key
import threading
import random
from sys import exit def getcolor(screen):
screen = pygame.display.get_surface()
bg = (173, 216, 230)# blue
screen.fill(bg)
pygame.display.flip() class GameSJB:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((800, 0),pygame.RESIZABLE) # width,height
print(pygame.display.get_surface())
pygame.display.set_caption('Pygame Game')
self.font = pygame.font.Font(None, 18)
getcolor(self.screen)
self.image = []
self.imagerect = []
if not os.path.exists('images'):
print('The pics don\'t exit')
pygame.quit()
sys.exit()
else:
print 'YES, the path is ./images'
self.vs = pygame.image.load('images/vs.png').convert()
self.o = pygame.image.load('images/o.png')
'''owdth,oht = self.o.get_size() #pic' size
print(owdth,oht)'''
self.p = pygame.image.load('images/p.png')
self.u = pygame.image.load('images/u.png')
self.title = pygame.image.load('images/title.png')
self.start = pygame.image.load('images/start.png')
self.exit = pygame.image.load('images/exit.png')
for i in range(3):
png = pygame.image.load('images/' + str(i) + '.png')
self.image.append(png)
for i in range(3):
img = self.image[i]
rect = img.get_rect()#the rectangular area
print rect
rect.left += 200 * (i + 1)
rect.top = 400
self.imagerect.append(rect) def isStart(self):
pos = pygame.mouse.get_pos()
print pos
if 350 < pos[0] < 450:
if 300 < pos[1] < 350:
return 0
elif 400 < pos[1] < 450:
return 1
else:
return 2
else:
return 2 def iswin(self, value):
num = random.randint(0,2)
self.screen.blit(self.image[num], (450, 150, 590, 240))
pygame.display.flip()
if num == value:
self.screen.blit(self.image[num], (450,150,590,240))
pygame.display.flip()
elif num < value:
if num == 0:
if value == 2:
self.screen.blit(self.u, (220, 10, 140, 70))
else:
self.screen.blit(self.p, (220,10,140,70))
pygame.display.flip()
else:
self.screen.blit(self.u, (220,10,140,70))
pygame.display.flip()
else:
if num == 2:
if value == 1:
self.screen.blit(self.u, (220, 10,140,70))
else:
self.screen.blit(self.p, (220,10,140,70))
pygame.display.flip()
else:
self.screen.blit(self.u, (220,10,140,70))
pygame.display.flip() def OnMouseButDown(self):
self.screen.blit(self.vs, (300,150,140,140))#draw pic
pos = pygame.mouse.get_pos()
if 400 < pos[1] < 540:
if 200 < pos[0] < 340:
self.screen.blit(self.image[0], (150,150,140,140))
self.iswin(0)
elif 400 < pos[0] < 540:
self.screen.blit(self.image[1], (150,150,140,140))
self.iswin(1)
elif 600 < pos[0] < 740:
self.screen.blit(self.image[2], (150,150,140,140))
self.iswin(2)
else:
pass def run(self):
self.screen.fill((0, 0, 0))
for i in range(3):
self.screen.blit(self.image[i], self.imagerect[i])
pygame.display.flip()
while True:
for event in pygame.event.get(): # close the app by button
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
self.OnMouseButDown()
else:
pass
keys = pygame.key.get_pressed() # close the app by ESC
if keys[pygame.K_ESCAPE]:
sys.exit() def Start(self):
self.screen.blit(self.title, (200, 100, 400, 140))
self.screen.blit(self.start, (350, 300, 100, 50))
self.screen.blit(self.exit, (350, 400, 100, 50))
pygame.display.flip() # refresh
start = 1
while start: # enter into mesg cycle
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
if self.isStart() == 0:
start = 0
elif self.isStart() == 1:
sys.exit()
else:
pass
else:
pass
self.run()
print(os.system(' python --version'))
print('sdl version:',pygame.get_sdl_version())
print('pygame version:',pygame.__version__)
game = GameSJB()
game.Start()
pygame学习笔记的更多相关文章
- pygame学习笔记(3)——时间、事件、文字
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 1.运动速率 上节中,实现了一辆汽车在马路上由下到上行驶,并使用了pygame.time.delay(200 ...
- PyGame学习笔记之壹
新建窗口 代码 '''PyGame学习笔记之壹''' import pygame # 引入 PyGame 库 pygame.init() # PyGame 库初始化 screen = pygame.d ...
- pygame学习笔记(4)——声音
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi pygame.mixer是一个用来处理声音的模块,其含义为“混音器”.游戏中对声音的处理一般包括制造声音和播放声音 ...
- pygame学习笔记(5)——精灵
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 据说在任天堂FC时代,精灵的作用相当巨大,可是那时候只知道怎么玩超级玛丽.魂斗罗,却对精灵一点也不知.pygame ...
- pygame学习笔记(1)——安装及矩形、圆型画图
pygame是一个设计用来开发游戏的python模块,其实说白了和time.os.sys都是一样的东东.今天开始正式学习pygame,下载地址:www.pygame.org.下载后安装完成即可,在py ...
- pygame学习笔记(6)——一个超级简单的游戏
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 学了这么长时间的Pygame,一直想写个游戏实战一下.看起来很简单的游戏,写其来怎么这么难.最初想写个俄罗斯方块 ...
- pygame学习笔记(2)——从画点到动画
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 1.单个像素(画点)利用pygame画点主要有三种方法:方法一:画长宽为1个像素的正方形 #@小五义 http:/ ...
- PYGAME学习笔记_01
01_使用PYGAME创建图形窗口 1.1_游戏的初始化和退出 pygame.init() 写入并初始化所有PYGAME模块,使用其他模块之前,必须先调用init方法 pygame.quit() 卸载 ...
- 转 pygame学习笔记(1)——安装及矩形、圆型画图
http://www.cnblogs.com/xiaowuyi/archive/2012/06/06/2538921.html
随机推荐
- Xamarin.ios 目录结构
1.Resources: 文件夹存放应用程序所. 2.AppDelegate.cs: 主要的应用程序类别(class) ,并接听 系统事件及相对应的事件处理. 3.Entitlements.plist ...
- php-7.1.0 rpm包制作
nginx-1.8.0 rpm包制作见上篇文章:http://www.cnblogs.com/xiaoming279/p/6251149.html spec文件 Name: php Version: ...
- QT下调试基于ros的catkin项目
1.首先告诉qt ros的搜索路径,通过修改qt creator 桌面启动程序来实现 sudo gedit ~/.local/share/applications/DigiaQtOpenSour ...
- jquery插件扩展的学习
jquery插件的学习可以点击这里 举个例子 //首先先来一个插件 (function($){ $.fn.extent({ bigfont:function(){ return this.css('f ...
- Thread 学习记录 <1> -- volatile和synchronized
恐怕比较一下volatile和synchronized的不同是最容易解释清楚的.volatile是变量修饰符,而synchronized则作用于一段代码或方法:看如下三句get代码: int i1; ...
- hub,桥,交换机,路由器的区别
1.四种设备在网络中的物理位置 如下图 2.这四种设备的本质 这四种设备,不管怎样,他们都是进行包的转发,只不过转发的行为有些不一样而已 3.逐一介绍 对于hub,一个包过来后,直接将包转发到其他口. ...
- SpringMVC学习记录1
起因 以前大三暑假实习的时候看到公司用SpringMVC而不是Struts2,老司机告诉我SpringMVC各种方便,各种解耦. 然后我自己试了试..好像是蛮方便的.... 基本上在Spring的基础 ...
- [Exchange 2013]创建约会和会议
简介 会议和约会之间的重要区别是,会议有与会者,并且没有约会.约会和会议可以是单实例或属于重复序列,但与会者. 房间或资源中不包括约会,因为它们不需要发送一条消息.在内部,Exchange 使用相同的 ...
- EF Core 杂记
本系列文章,将介绍本人在学习和使用EF Core的过程中的收获与心得. 或许有的地方讲的错误 欢迎大家批评指出. 1.EF Core 数据库迁移(Migration)
- Safari new Date()
最近在敲代码的时候不觉得Safari有什么兼容问题,相比较的更多的时候再考虑ie,结果今天就栽在了Safari日期格式化上面了. 正如前面说的没有特别注意Safari的兼容问题所以特地粘贴这个打开Sa ...