pygame小游戏源代码

Python实现消消乐小游戏

pre{overflow-x: auto} 实现 消消乐的构成主要包括三部分:游戏主体、计分器、计时器,下面来看一下具体实现。

先来看一下游戏所需 Python 库。
import os import sys import time import pygame import random
定义一些常量,比如:窗口宽高、网格行列数等,代码如下:
WIDTH = 400 HEIGHT = 400 NUMGRID = 8 GRIDSIZE = 36 XMARGIN = (WIDTH – GRIDSIZE * NUMGRID) // 2 YMARGIN = (HEIGHT – GRIDSIZE * NUMGRID) // 2 ROOTDIR = os.getcwd() FPS = 30
接着创建一个主窗口,代码如下:
pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption(’消消乐’)
看一下效果:
再接着在窗口中画一个 8 x 8 的网格,代码如下:
screen.fill((255, 255, 220)) # 游戏界面的网格绘制 def drawGrids(self): for x in range(NUMGRID): for y in range(NUMGRID): rect = pygame.Rect((XMARGIN+x*GRIDSIZE, YMARGIN+y*GRIDSIZE, GRIDSIZE, GRIDSIZE)) self.drawBlock(rect, color=(255, 165, 0), size=1 # 画矩形 block 框 def drawBlock(self, block, color=(255, 0, 0), size=2): pygame.draw.rect(self.screen, color, block, size)
看一下效果:
再接着在网格中随机放入各种拼图块,代码如下:
while True: self.all_gems =  == 0: break
看一下效果:
再接着加入计分器和计时器,代码如下:
# 显示得分 def drawScore(self): score_render = self.font.render(’分数:’+str(self.score), 1, (85, 65, 0)) rect = score_render.get_rect() rect.left, rect.top = (55, 15) self.screen.blit(score_render, rect) # 显示加分 def drawAddScore(self, add_score): score_render = self.font.render(’+’+str(add_score), 1, (255, 100, 100)) rect = score_render.get_rect() rect.left, rect.top = (250, 250) self.screen.blit(score_render, rect) # 显示剩余时间 def showRemainingTime(self): remaining_time_render = self.font.render(’倒计时: %ss’ % str(self.remaining_time), 1, (85, 65, 0)) rect = remaining_time_render.get_rect() rect.left, rect.top = (WIDTH-190, 15) self.screen.blit(remaining_time_render, rect)
看一下效果:
当设置的游戏时间用尽时,我们可以生成一些提示信息,代码如下:
while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYUP and event.key == pygame.K_r: flag = True if flag: break screen.fill((255, 255, 220)) text0 = ’最终得分: %s’ % score text1 = ’按 R 键重新开始’ y = 140 for idx, text in enumerate(): text_render = font.render(text, 1, (85, 65, 0)) rect = text_render.get_rect() if idx == 0: rect.left, rect.top = (100, y) elif idx == 1: rect.left, rect.top = (100, y) y += 60 screen.blit(text_render, rect) pygame.display.update()
看一下效果:
说完了游戏图形化界面相关的部分,我们再看一下游戏的主要处理逻辑。

我们通过鼠标来操纵拼图块,因此程序需要检查有无拼图块被选中,代码实现如下:
def checkSelected(self, position): for x in range(NUMGRID): for y in range(NUMGRID): if self.getGemByPos(x, y).rect.collidepoint(*position): return  return None
我们需要将鼠标连续选择的拼图块进行位置交换,代码实现如下:
def swapGem(self, gem1_pos, gem2_pos): margin = gem1_pos = gem2 return True
每一次交换拼图块时,我们需要判断是否有连续一样的三个及以上拼图块,代码实现如下:
def isMatch(self): for x in range(NUMGRID): for y in range(NUMGRID): if x + 2  -2: for each in  = gem start -= 1
之后反复执行这个过程,直至耗尽游戏时间,游戏结束。

最后,我们动态看一下游戏效果。
总结
本文我们使用 Python 实现了一个简单的消消乐游戏,有兴趣的可以对游戏做进一步扩展,比如增加关卡等。

到此这篇关于Python实现消消乐小游戏的文章就介绍到这了,希望大家以后多多支持!

电脑浏览器输入代码可玩的游戏

电脑浏览器输入代码可玩的游戏:Pygame小游戏。游戏操作起来十分简单,只需要继续按空格键跳跃,不断避开出现的障碍物仙人掌。

python小游戏

idea +python3.8+pygame

《pre spellcheck=“false“ class=“md-fences md-end-block ty-contain-cm modeLoaded“ lang=“python“ cid=“n5“ mdtype=“fences“ style=“box-sizing: border-box; overflow: visible; font-family: var(–monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;“》import random
rang1 = int(input(“请设置本局游戏的最小值:“))
rang2 = int(input(“请设置本局游戏的最大值:“))
num = random.randint(rang1,rang2)
guess = “guess“
print(“数字猜谜游戏!“)
i = 0
while guess != num:
i += 1
guess = int(input(“请输入你猜的数字:“))

if guess == num:
print(“恭喜,你猜对了!“)
elif guess 《 num:
print(“你猜的数小了…“)
else:
print(“你猜的数大了…“)

print(“你总共猜了%d“ %i + “次“,end = ’’)
print(“,快和你朋友较量一下…“)《/pre》

成果图

《pre spellcheck=“false“ class=“md-fences md-end-block ty-contain-cm modeLoaded“ lang=“python“ cid=“n10“ mdtype=“fences“ style=“box-sizing: border-box; overflow: visible; font-family: var(–monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;“》import pygame
import random
from pygame.locals import *

WIDTH = 1200

HEIGHT = 600

class Peas:

def init (self):

self.image = pygame.image.load(“./res/peas.gif“)

self.image_rect = self.image.get_rect()

self.image_rect.top = 285
self.image_rect.left = 30

self.is_move_up = False

self.is_move_down = False

self.is_shout = False

def display(self):
“““显示豌豆的方法“““
screen.blit(self.image, self.image_rect)

def move_up(self):
“““豌豆向上移动“““
if self.image_rect.top 》 30:

self.image_rect.move_ip(0, -10)
else:
for z in Zombie.zombie_list:
if self.image_rect.colliderect(z.image_rect):
pygame.quit()
exit()

def move_down(self):
“““豌豆向下移动“““
if self.image_rect.bottom 《 HEIGHT – 10:
self.image_rect.move_ip(0, 10)
else:
for z in Zombie.zombie_list:
if self.image_rect.colliderect(z.image_rect):
pygame.quit()
exit()

def shout_bullet(self):
“““发射炮弹方法“““

bullet = Bullet(self)
Bullet.bullet_list.append(bullet)

class Bullet:

bullet_list =

interval = 0

def init (self, peas):

self.image = pygame.image.load(“./res/bullet.gif“)

self.image_rect = self.image.get_rect()

self.image_rect.top = peas.image_rect.top
self.image_rect.left = peas.image_rect.right

def display(self):
“““显示炮弹的方法“““
screen.blit(self.image, self.image_rect)

def move(self):
“““移动炮弹“““
self.image_rect.move_ip(8, 0)
if self.image_rect.right 》 WIDTH – 20:
Bullet.bullet_list.remove(self)
else:
for z in Zombie.zombie_list:
if self.image_rect.colliderect(z.image_rect):
Zombie.zombie_list.remove(z)
Bullet.bullet_list.remove(self)
break

class Zombie:

zombie_list =

interval = 0

def init (self):

self.image = pygame.image.load(“./res/zombie.gif“)
self.image = pygame.transform.scale(self.image, (70, 70))

self.image_rect = self.image.get_rect()

self.image_rect.top = random.randint(10, HEIGHT-70)
self.image_rect.left = WIDTH

def display(self):
“““显示炮弹的方法“““
screen.blit(self.image, self.image_rect)

def move(self):
“““移动僵尸“““
self.image_rect.move_ip(-2, 0)
if self.image_rect.left 《 0:
Zombie.zombie_list.remove(self)
else:

if self.image_rect.colliderect(peas.image_rect):
pygame.quit()
exit()
for b in Bullet.bullet_list:
if self.image_rect.colliderect(b.image_rect):
Bullet.bullet_list.remove(b)
Zombie.zombie_list.remove(self)
break

def key_control():

for event in pygame.event.get():

if event.type == QUIT:

pygame.quit()

exit()

if event.type == KEYDOWN:

if event.key == K_UP:

peas.is_move_up = True
peas.is_move_down = False
elif event.key == K_DOWN:
peas.is_move_up = False
peas.is_move_down = True
elif event.key == K_SPACE:
peas.is_shout = True

if event.type == KEYUP:
if event.key == K_UP:
peas.is_move_up = False
elif event.key == K_DOWN:
peas.is_move_down = False
elif event.key == K_SPACE:
peas.is_shout = False

if name == ’ main ’:

pygame.init()

screen = pygame.display.set_mode((WIDTH, HEIGHT))

background_image = pygame.image.load(“./res/background.png“)

scale_background_image = pygame.transform.scale(background_image, (WIDTH, HEIGHT))

scale_background_image_rect = scale_background_image.get_rect()

clock = pygame.time.Clock()

peas = Peas()
while True:

screen.fill((0,0,0))

screen.blit(scale_background_image, scale_background_image_rect)
peas.display()
key_control()
if peas.is_move_up:
peas.move_up()
if peas.is_move_down:
peas.move_down()

Bullet.interval += 1
if peas.is_shout and Bullet.interval 》= 15:
Bullet.interval = 0
peas.shout_bullet()

Zombie.interval += 1
if Zombie.interval 》= 15:
Zombie.interval = 0
Zombie.zombie_list.append(Zombie())

for bullet in Bullet.bullet_list:

bullet.display()

bullet.move()

for zombie in Zombie.zombie_list:
zombie.display()
zombie.move()

pygame.display.update()
clock.tick(60)《/pre》

成果

用python语言编写一个点击彩色泡泡的小游戏

  • 建议你悬赏500rmb

Python程序开发之简单小程序实例(11)小游戏-跳动的小球

Python程序开发之简单小程序实例

(11)小 游戏 -跳动的小球

一、项目功能

用户控制挡板来阻挡跳动的小球。

二、项目分析

根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。在控制小球的类中,我们还需要考虑当小球下降时,碰到挡板时的位置判断。

三、程序源代码

源码部分截图:

源码:

#!/usr/bin/python3.6

# -*- coding: GBK -*-

#导入相应模块

from tkinter import *

import random

import time

#自定义小球的类 Ball

class Ball:

# 初始化

def __init__(self,canvas,paddle,color):

#传递画布值

self.canvas=canvas

#传递挡板值

self.paddle=paddle

#画圆并且保存其ID

self.id=canvas.create_oval(10,10,25,25,fill=color)

self.canvas.move(self.id,245,100)

#小球的水平位置起始列表

start=

#随机化位置列表

random.shuffle(start)

self.x=start

self.y=-2

self.canvas_heigh=self.canvas.winfo_height()#获取窗口高度并保存

self.canvas_width=self.canvas.winfo_width()

#根据参数值绘制小球

def draw(self):

self.canvas.move(self.id,self.x,self.y)

pos=self.canvas.coords(self.id)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标)

#使得小球不会超出窗口

pad=self.canvas.coords(self.paddle.id)#获取小球挡板的坐标

if pos

请用PYTHON编一个小游戏,如五子棋,连连看,贪吃蛇,扫雷,计算器等等

#!/usr/bin/python
from Tkinter import *
import random
class snake(Frame):
        def __init__(self, master=None):
                Frame.__init__(self, master)
                self.body =
                self.bodyid =
                self.food =
                self.foodid = -1
                self.gridcount = 10
                self.size = 500
                self.di = 3
                self.speed = 500
                self.top = self.winfo_toplevel()
                self.top.resizable(False, False)
                self.grid()
                self.canvas = Canvas(self)
                self.canvas.grid()
                self.canvas.config(width=self.size, height=self.size,relief=RIDGE)
                self.drawgrid()
                s = self.size/self.gridcount
                id = self.canvas.create_rectangle(self.body*s,
                        (self.body+1)*s, fill=“yellow“)
                self.bodyid.insert(0, id)
                self.bind_all(“《KeyRelease》“, self.keyrelease)
                self.drawfood()
                self.after(self.speed, self.drawsnake)
        def drawgrid(self):
                s = self.size/self.gridcount
                for i in range(0, self.gridcount+1):
                        self.canvas.create_line(i*s, 0, i*s, self.size)
                        self.canvas.create_line(0, i*s, self.size, i*s)
        def drawsnake(self):
                s = self.size/self.gridcount
                head = self.body
                new =
                if self.di == 1:
                        new-1) % self.gridcount
                elif self.di == 2:
                        new+1) % self.gridcount
                elif self.di == 3:
                        new+1) % self.gridcount
                else:
                        new-1) % self.gridcount
                next = ( new )
                if next in self.body:
                        exit()
                elif next == (self.food):
                        self.body.insert(0, next)
                        self.bodyid.insert(0, self.foodid)
                        self.drawfood()
                else:
                        tail = self.body.pop()
                        id = self.bodyid.pop()
                        self.canvas.move(id, (next)*s)
                        self.body.insert(0, next)
                        self.bodyid.insert(0, id)
                self.after(self.speed, self.drawsnake)
        def drawfood(self):
                s = self.size/self.gridcount
                x = random.randrange(0, self.gridcount)
                y = random.randrange(0, self.gridcount)
                while (x, y) in self.body:
                        x = random.randrange(0, self.gridcount)
                        y = random.randrange(0, self.gridcount)
                id = self.canvas.create_rectangle(x*s,y*s, (x+1)*s, (y+1)*s, fill=“yellow“)
                self.food = x
                self.food = y
                self.foodid = id
        def keyrelease(self, event):
                if event.keysym == “Up“ and self.di != 3:
                        self.di = 1
                elif event.keysym == “Right“ and self.di !=4:
                        self.di = 2
                elif event.keysym == “Down“ and self.di != 1:
                        self.di = 3
                elif event.keysym == “Left“ and self.di != 2:
                        self.di = 4
app = snake()
app.master.title(“Greedy Snake“)
app.mainloop()

贪食蛇

Python游戏开发,Python实现贪吃蛇小游戏与吃豆豆 附带源码

Python版本: 3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

安装Python并添加到环境变量,pip安装需要的相关模块即可。

贪吃蛇的 游戏 规则应该不需要我多做介绍了吧T_T。写个贪吃蛇 游戏 其实还是很简单的。首先,我们进行一下 游戏 初始化:

然后定义一个贪吃蛇类:

其中head_coord用来记录蛇头所在位置,而tail_coords是一个二维数组,用来记录所有蛇身的位置。一开始,贪吃蛇长为3,并且位置是随机生成的。用户通过 键来控制贪吃蛇的行动:

需要注意的是,贪吃蛇不能180 大拐弯,只能90 地拐弯。例如正在向左行动的贪吃蛇不能瞬间变成向右行动。具体而言,代码实现如下:

然后,我们需要随机生成一个食物,且需要保证该食物的位置不与贪吃蛇的位置相同:

在更新贪吃蛇的时候,如果它吃到了食物,则蛇身长加一,否则只是简单的按照给定的方向行动而不改变蛇身长度:

同时,当贪吃蛇吃到食物时,需要重新生成一个新的食物:

最后,当贪吃蛇碰到墙壁或者蛇头碰到蛇身时, 游戏 结束:

并显示一下 游戏 结束界面:

玩家通过 键控制 游戏 的主角吃豆人吃掉藏在迷宫内的所有豆子,并且不能被鬼魂抓到。

若能顺利吃完迷宫内的所有豆子并且不被鬼魂抓到,则 游戏 胜利,否则 游戏 失败。

逐步实现:

Step1:定义 游戏 精灵类

首先,让我们先来明确一下该 游戏 需要哪些 游戏 精灵类。

① 墙类

② 食物类(即豆豆)

③ 角色类

角色类包括吃豆人和鬼魂,鬼魂由电脑控制其运动轨迹,吃豆人由玩家控制其运动轨迹。

显然,其均需具备更新角色位置和改变角色运动方向的能力,其源代码如下:

Step2:设计 游戏 地图

利用Step1中定义的 游戏 精灵类,我们就可以开始设计 游戏 地图了。由于时间有限,我只写了一个关卡的 游戏 地图,有兴趣的小伙伴可以在此基础上进行扩展(在我的源代码基础上进行扩展是很方便滴~)。 游戏 地图的设计包括以下四方面内容:

① 创建墙

② 创建门(一开始关幽灵用的)

image.gif

③ 创建角色

④ 创建食物

因为食物不能和墙、门以及角色的位置重叠,所以为了方便设计 游戏 地图,要先创建完墙、门以及角色后再创建食物:

Step3:设计 游戏 主循环

接下来开始设计 游戏 主循环。首先是初始化:

然后定义主函数:

其中startLevelGame函数用于开始某一关 游戏 ,其源代码如下:

showText函数用于在 游戏 结束或关卡切换时在 游戏 界面中显示提示性文字,其源代码如下:

100行Python代码,轻松完成贪吃蛇小游戏

你是想让我们向你提问题?你这个放错地方了,应该发布到自己的博客或论坛上面才对

python能写什么小游戏

python可以做大多数网络游戏的,例如用一个pygame,做一些图片,将图片插入到pygame的python代码中,编写它的功能以及作用,多做一些,连在一起就是游戏了。
比如王者荣耀,首页就是动图的结合,图片点击效果可以通过代码实现,里面的对战可以通过代码控制图片效果,以达到打斗的场景。
只要学得精,有时间去做,去写,一般的那些高级游戏都是可以做出来的