pygame制作简单小游戏
初学者,有问题大家一起交流
import random
import pygame
from pygame.locals import *
import sys
import math;
import pygame.freetypeclass Game:def __init__(self):pygame.init()self.W, self.H = 800, 600;self.screen = pygame.display.set_mode((self.W, self.H))pygame.display.set_caption("Window");self.ball = pygame.image.load("./image/04.jpg");# 设置碳板的宽度self.leng = 140;# 设置碳板的初始坐标self.left = 0;self.right = self.left + self.leng;# 圆心的初始位置:self.cirx = random.randint(20, self.W - 20);self.ciry = random.randint(35, self.H - 55);# flagself.flag = 1;self.to = "r";self.cnt = 1;# 设置帧速率:self.fpsClock = pygame.time.Clock();self.fps = 60;# 设置检测时间pygame.key.set_repeat(10, 15);# 背景音乐pygame.mixer.init()pygame.mixer.music.load("./sing/01.mp4");pygame.mixer.music.play(-1)# 设置速度self.stspeed = 2;self.ti = 0;# 设置成绩列表self.score = [0];self.maxscore=0;# 绘制文字pygame.font.init();self.str1="您目前的最高得分为:{}".format(self.maxscore);self.a = pygame.font.SysFont("kaiti", 36);self.num1 = self.a.render("重新开始", True, (0, 0, 0));self.num2 = self.a.render("退出游戏", True, (0, 0, 0));self.num3=self.a.render(self.str1,True,(0,0,0));#游戏开关self.ok=1;#获取鼠标位置self.x=0;self.y=0;def listen(self):#求最大分数for i in self.score:if i>self.maxscore:self.maxscore=i;self.str1="您目前的最高得分为:{}".format(self.maxscore);self.num3 = self.a.render(self.str1, True, (0, 0, 0));for event in pygame.event.get():if event.type == QUIT:sys.exit()# 底部碳板的移动轨迹elif event.type == pygame.KEYDOWN:if event.key == pygame.K_a: # 左if self.left <= -70:break;else:self.left -= 5;self.right -= 5;elif event.key == pygame.K_d: # 右if self.right >= self.W + 70:break;else:self.left += 5;self.right += 5;elif event.type==pygame.MOUSEBUTTONUP:(self.x,self.y)=pygame.mouse.get_pos();# 球的移动轨迹if self.ti % 1000 == 0 and self.stspeed < 12:self.stspeed += 1;if self.flag == 1: # 第一次下降状态self.ti += 2;self.ciry += 2;if self.ciry < 573 and self.ciry > 559 and self.cirx >= self.left and self.cirx <= self.right:self.flag = 2; # 打在板上if self.ciry > self.H:self.flag = 0;print("lose");elif self.flag == 2: # 上升状态 不用改变状态self.ti += 2;if self.to == "r":self.ciry -= self.stspeed;self.cirx += self.stspeed;elif self.to == "l":self.ciry -= self.stspeed;self.cirx -= self.stspeed;if self.ciry <= 12.5 and self.cirx > 20 and self.cirx < self.W - 20:self.flag = 3; # 打在上面反弹;if self.cirx <= 20 or self.cirx >= self.W - 20:self.flag = 5; #if self.ciry > self.H:self.flag = 0;print("lose");elif self.flag == 3: # 第一次以后的下降墙上 不需要改变状态self.ti += 2;if self.to == "r":self.ciry += self.stspeed;self.cirx += self.stspeed;elif self.to == "l":self.ciry += self.stspeed;self.cirx -= self.stspeed;if self.ciry < 573 and self.ciry > 559 and self.cirx >= self.left and self.cirx <= self.right:self.flag = 2; # 打在板上if self.cirx <= 20 or self.cirx >= self.W - 20:self.flag = 4; # 打在墙体上;if self.ciry > self.H:self.flag = 0;print("lose");elif self.flag == 4: # 从上面打到墙上self.ti += 2;if self.cnt == 1:self.cnt -= 1;if self.to == "r":self.to = "l";elif self.to == "l":self.to = "r";else:if self.to == "r":self.ciry += self.stspeed;self.cirx += self.stspeed;elif self.to == "l":self.ciry += self.stspeed;self.cirx -= self.stspeed;# if self.cirx <= 20 or self.cirx >= self.W - 20:# self.flag = 4; # 打在墙体上;if self.ciry < 573 and self.ciry > 559 and self.cirx >= self.left and self.cirx <= self.right:self.cnt += 1;self.flag = 2; # 打在板上if self.ciry > self.H:self.flag = 0;print("lose");elif self.flag == 5: # 从下面达到墙上self.ti += 2;if self.cnt == 1:self.cnt -= 1;if self.to == "r":self.to = "l";elif self.to == "l":self.to = "r"else:if self.to == "r":self.ciry -= self.stspeed;self.cirx += self.stspeed;elif self.to == "l":self.ciry -= self.stspeed;self.cirx -= self.stspeed;# if self.cirx <= 20 or self.cirx >= self.W - 20:# self.flag = 5; # 打在墙体上;if self.ciry <= 12.5 and self.cirx > 20 and self.cirx < self.W - 20:self.cnt += 1;self.flag = 3; # 打在上面反弹;if self.ciry > self.H:self.flag = 0;print("lose");elif self.flag == 0:self.score.append(self.ti);pygame.mixer.music.stop();self.screen.blit(self.num3,(250,200));self.screen.blit(self.num1, (300, 300));self.screen.blit(self.num2, (300, 400));if self.x>300 and self.x<440 and self.y>300 and self.y<330:self.x=0;self.y=0;self.left = 0;self.cnt = 1;self.right = self.left + self.leng;self.cirx = random.randint(20, self.W - 20);self.ciry = random.randint(35, self.H - 55);self.flag=1;self.ti=0;self.to="r";pygame.mixer.music.play();self.stspeed=2;elif self.x>300 and self.x<440 and self.y>400 and self.y<430:sys.exit()def draw(self):self.screen.fill((255, 255, 255))# 渲染背景图片self.ball = pygame.transform.scale(self.ball, (self.W, self.H));self.screen.blit(self.ball, (0, 0));# 画顶部直线pygame.draw.line(self.screen, (255, 0, 0), (0, 10), (self.W, 10), 5);# 画底部碳板pygame.draw.line(self.screen, (0, 0, 0), (self.left, self.H), (self.right, self.H), 30);# 画弹弹球pygame.draw.circle(self.screen, (130, 130, 130), (self.cirx, self.ciry), 20, 20);def run(self):while self.ok:self.draw()self.listen()self.fpsClock.tick(self.fps);pygame.display.update()if __name__ == '__main__':game = Game()game.run();
pygame制作简单小游戏相关推荐
- 【游戏思路】制作简单小游戏实现思路总结
很多小伙伴在制作游戏的时候苦于没有思路,实际上制作一个游戏是很简单的,我们可以先从小游戏开始思考. 小游戏的概念和分类 概念:单机或联机类型,操作简单,效果简单,体积不大,玩法单一类型. 特点:体积小 ...
- Python小游戏——Pygame制作2048小游戏
pygame之2048小游戏 初学python,发现看网上的python理论太过枯燥. 哎嘿~~干脆直接弄个小游戏叭,一边学习,一边写代码. 备注: 1.很多地方我尽量注解,方便大家观看. 2.完整代 ...
- 使用Pygame制作2048小游戏
好久没有写文章了,暑假一直没有怎么学习计算机方面的相关知识,不过倒是坚持背了一个多月的单词红宝书,看了汤神的基础课.真的没想到自己居然也能有毅力背了150多页的单词,还写完了一本正反面的字帖这些事以前 ...
- python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...
1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...
- python小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏
1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...
- Python Pygame制作简单五子棋游戏(详细代码+解释)
这里只想简单演示下一个简单的五子棋界面和落子等操作,主要为了后面设计AI对战方便演示,AI算法后面设计吧,最近事太多了,,,,. 希望本文有助于你制作自己期望的简单的五子棋. 一.pygame初始化画 ...
- python经典教程游戏_使用pygame制作经典小游戏:五子棋
准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...
- python pygame 简单小游戏
python pygame 简单小游戏 最近学习了pygame,感觉十分有意思,花了一点时间制作了一个简单的小游戏 效果图 这是一个很简单的防守类小游戏 玩家可以使用wasd控制人物移动,并且鼠标控制 ...
- 基于pygame的射击小游戏制作(一)让飞船动起来
基于pygame的射击小游戏制作(一)让飞船动起来 一.文件结构 alien_invasion.py 是整个系统的主文件,用来创建游戏中的一系列对象,ai_settings存储设置.screen存储显 ...
最新文章
- 案例实作图解Asp.Net MVC教程
- python 操作微信定时发信息
- 18行代码AC_Wet Shark and Bishops CodeForces - 621B(数学推导+映射)
- Net方式实现主机与虚拟机互相ping通
- java字符串常量池长度_Java String类相关知识梳理(含字符串常量池(String Pool)知识)...
- 启动kafka报错:__consumer_offsets-22\00000000000000000000.index.swap: 另一个程序正在使用此文件,进程无法访问。
- php自动维护,window_Win7系统中的一些自动维护计划、任务关闭、禁用方法图文教程, windows自动维护功能会在计 - phpStudy...
- 数据增强_NLP 数据增强方法 EDA
- Go专栏“改善Go语言编程质量的50个有效实践”上线了
- IDEA打包war部署到Tomcat
- 百度开放平台Demo提示“Key验证失败...”的问题
- Linux平台下软件推荐及主题图标推荐
- python requests ‘latin-1‘ codec can‘t encode characters in position 374-379: ordinal not in
- 企业数字化/数智化转型(一):数智力创新2.0
- API MISUSE: <CBCentralManager: 0x000000000> can only accept this command while in the powered on
- 《计算机是怎样跑起来的》学习笔记
- ubuntu 修改系统默认语言为英文!
- linux 硬盘时间查询,Linux 查看硬盘通电时间
- android 友盟统计动态设置渠道,Android 友盟多渠道打包
- 技术总监的校招之旅——分享校招全攻略指南(万字长文)
热门文章
- 诺基亚智能手机未来仅采用Symbian和MeeGo系统
- 两栏布局的几种实现方式
- java常用工具类和Hutool常用的工具类整理
- Matlab GUI handles结构体入门
- 学习存储技术的5个阶段
- Python图像处理丨图像的灰度线性变换
- HDU6356 Glad You Came(2018HDU多校联赛第五场,线段树)
- 解决java -version 系统找不到文件 C:\ProgramData\Oracle\Java\javapath\java.exe的问题
- 扯一下关于魔兽改键的蛋
- 嵌入式截屏工具-gsnap移植 arm平台