用Python开发嗷大喵快跑小游戏,详细版!(Python小游戏编程)

基于Pygame实现谷歌浏览器的恐龙快跑小游戏(Python) 其实前段时间早就写完这个了,但是一直没有机会写博客,因为现在正好在复习python的一些东西,可以写一下博客来复习梳理一下整个游戏的流程。 1.效果展示 2.实现主窗体 先从最主要的开始入手,做一个游戏的窗体,因为导入了pygame,感觉在python中做一个小游戏比Java中更加容易做。可以直接设置FPS什么的,很方便。 下面是窗体部分实现代码 import pygame from pyga... 阅读详情

用python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。

打个小广告——分享一份Python学习大礼包(激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程、100个项目源码、Python电子书等等)

点击领取 100%免费!

效果图:

现在我们来分析一下制作流程:

游戏中一共有嗷大喵,恶龙,火焰,爆炸动画和果实(就是上方蓝色的矩形块)这几种精灵。这里我们使用到了前几期博客中的MyLibrary.py。上述这几个精灵都是 MySprite类实例化的对象。

为了方便管理。我们建立了几个精灵组,并且将一些精灵塞到了里面:

#创建精灵组
group = pygame.sprite.Group()
group\_exp \= pygame.sprite.Group()
group\_fruit \= pygame.sprite.Group()
#创建怪物精灵
dragon = MySprite()
dragon.load("dragon.png", 260, 150, 3)
dragon.position \= 100, 230
group.add(dragon)

#创建爆炸动画
explosion = MySprite()
explosion.load("explosion.png",128,128,6)
#创建玩家精灵
player = MySprite()
player.load("sprite.png", 100, 100, 4)
player.position \= 400, 270
group.add(player)

#创建子弹精灵
arrow = MySprite()
arrow.load("flame.png", 40, 16, 1)
arrow.position \= 800,320
group.add(arrow)

在程序开始的时候我们可以看到有一个欢迎界面,为了简单我这里是直接在ps里面做好了图片,然后加载到程序中的:

interface = pygame.image.load("interface.png")

界面上面还有一个按钮,当鼠标经过的时候,会变成灰底的,因此我们设计一个button类:

简单来说就是预先加载一张正常状态下在的button图片和一个按下状态的button图片,然后判断鼠标的pos是否和button的位置有重合,如果有则显示button被按下时的图片。

#定义一个按钮类
class Button(object):
    def \_\_init\_\_(self, upimage, downimage,position):
        self.imageUp \= pygame.image.load(upimage).convert\_alpha()
        self.imageDown \= pygame.image.load(downimage).convert\_alpha()
        self.position \= position
        self.game\_start \= False
        
    def isOver(self):
        point\_x,point\_y \= pygame.mouse.get\_pos()
        x, y \= self. position
        w, h \= self.imageUp.get\_size()

        in\_x \= x - w/2 < point\_x < x + w/2
        in\_y \= y - h/2 < point\_y < y + h/2
        return in\_x and in\_y

    def render(self):
        w, h \= self.imageUp.get\_size()
        x, y \= self.position
        
        if self.isOver():
            screen.blit(self.imageDown, (x\-w/2,y-h/2))
        else:
            screen.blit(self.imageUp, (x\-w/2, y-h/2))
    def is\_start(self):
        if self.isOver():
            b1,b2,b3 \= pygame.mouse.get\_pressed()
            if b1 == 1:
                self.game\_start \= True
                bg\_sound.play\_pause()
                btn\_sound.play\_sound()
                bg\_sound.play\_sound()

可以看到这个button类里面我还添加了一个isStart的方法,他是用来判断是否开始游戏的。当鼠标的位置与button重合,且按下鼠标左键的时候,游戏就开始。

(将game_start变量置为True)然后通过btn_sound.play_sound(),bg_sound.play_sound() 这两句来播放按钮被按下的声音和游戏的背景音乐。

关于pygame中声音的操作,我稍后介绍一下。

可以看到程序中还有一个不停滚动的地图,让我们来实现这个滚动地图类:

#定义一个滚动地图类
class MyMap(pygame.sprite.Sprite):
    
    def \_\_init\_\_(self,x,y):
        self.x \= x
        self.y \= y
        self.bg \= pygame.image.load("background.png").convert\_alpha()
    def map\_rolling(self):
        if self.x < -600:
            self.x \= 600
        else:
            self.x \-=5
    def map\_update(self):
        screen.blit(self.bg, (self.x,self.y))
    def set\_pos(x,y):
        self.x \=x
        self.y \=y

创建两个地图对象:

#创建地图对象
bg1 = MyMap(0,0)
bg2 \= MyMap(600,0)

在程序中直接调用update和rolling方法就可以让地图无限的滚动起来了。

bg1.map\_update()
bg2.map\_update()
bg1.map\_rolling()
bg2.map\_rolling()

你看明白这个无限滚动地图是如何工作的了吗。首先渲染两张地图背景,一张展示在屏幕上面,一张在屏幕之外预备着(我们暂时看不到),如下图所示:

然后两张地图一起以相同的速度向左移动:

当地图1完全离开屏幕范围的时候,再次将它的坐标置为600,0(这样就又回到了状态1):

这样通过两张图片的不断颠倒位置,然后平移,在我们的视觉中就形成了一张不断滚动的地图了。

下面介绍一下如何在pygame中加载并且使用声音:

1.初始化音频模块:

我们要使用的音频系统包含在了pygame的pygame.mixer模块里面。因此在使用音频之前要初始化这个模块:

pygame.mixer.init()

这个初始化模块语句在程序中执行一次就好。

2.加载音频文件:

使用的是pygame.mixer.Sound类来加载和管理音频文件,pygame支持两种音频文件:未压缩的WAV和OGG音频文件,如果要播放长时间的音乐,我推荐你使用OGG格式音频文件,因为它的体积比较小,适合长时间的加载和播放。当你要播放比较短的音频的时候可以选择WAV。

hit\_au = pygame.mixer.Sound("exlposion.wav")

3.播放音乐:

上面的pygame.mixer.Sound函数返回了一个sound对象,我们可以使用play和stop方法来播放和停止播放音乐。

但是这里我们介绍一种更为高级的用法,使用pygame.mixer.Channel,这个类提供了比sound对象更为丰富的功能。

首先我们先申请一个可用的音频频道:

channel = pygame.mixer.find\_channel(True)

一旦有了频道之后我们就可以使用Channel.play()方法来播放一个sound对象了。

channel.play(sound)

好了现在让我们来实现一下和音频有关的模块:

首先定义一个初始化的函数,它初始化了音频模块,并且加载了一些音频文件以方便我们在程序中使用:

def audio\_init():
    global hit\_au,btn\_au,bg\_au,bullent\_au
    pygame.mixer.init()
    hit\_au \= pygame.mixer.Sound("exlposion.wav")
    btn\_au \= pygame.mixer.Sound("button.wav")
    bg\_au \= pygame.mixer.Sound("background.ogg")
    bullent\_au \= pygame.mixer.Sound("bullet.wav")

然后我们实现了一个Music类,这个类可以控制声音的播放和暂停(set_volume函数是用来设置音乐声音大小的):

class Music():
    def \_\_init\_\_(self,sound):
        self.channel \= None
        self.sound \= sound     
    def play\_sound(self):
        self.channel \= pygame.mixer.find\_channel(True)
        self.channel.set\_volume(0.5)
        self.channel.play(self.sound)
    def play\_pause(self):
        self.channel.set\_volume(0.0)
        self.channel.play(self.sound)

跳跃函数:

当按下空格键的时候,嗷大喵会跳起,这个是如何实现的呢?

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    keys \= pygame.key.get\_pressed()
    if keys\[K\_ESCAPE\]:
        pygame.quit()
        sys.exit()
        
    elif keys\[K\_SPACE\]:
        if not player\_jumping:
            player\_jumping \= True
            jump\_vel \= -12.0

当按下空格键的时候,会将player_jumping变量置为True 并且给jump_vel一个初速度-12.0

然后在每次循环的时候,将jump_vel 加0.6,当嗷大喵回到起跳位置的时候,将速度置为0,使人物不再在y方向上有移动。

            #检测玩家是否处于跳跃状态
            if player\_jumping:
                if jump\_vel <0:
                    jump\_vel += 0.6
                elif jump\_vel >= 0:
                    jump\_vel += 0.8
                player.Y += jump\_vel
                if player.Y > player\_start\_y:
                    player\_jumping \= False
                    player.Y \= player\_start\_y
                    jump\_vel \= 0.0

然后我们还需要一个不断发出的子弹:

#更新子弹
            if not game\_over:
                arrow.X \-= arrow\_vel
            if arrow.X < -40: reset\_arrow()
#重置火箭函数
def reset\_arrow():
    y \= random.randint(270,350)
    arrow.position \= 800,y
    bullent\_sound.play\_sound()

关于嗷大喵和子弹冲突检测我们使用了之前学过的矩形冲突检测技术,当玩家和子弹产生冲突的时候,重置子弹,播放爆炸动画,然后将人物的x坐标值向左移动10,以表示人物受到伤害。恶龙和子弹的冲突和这个是一样的,这里就不再赘述了。

#碰撞检测,子弹是否击中玩家
            if pygame.sprite.collide\_rect(arrow, player):
                reset\_arrow()
                explosion.position \=player.X,player.Y
                player\_hit \= True
                hit\_sound.play\_sound()
                if p\_first:
                    group\_exp.add(explosion)
                    p\_first \= False
                player.X \-= 10

然后我们还需要考虑一下玩家被恶龙追上的时候的情形,还是应用矩形检测技术:

            if pygame.sprite.collide\_rect(player, dragon):
                game\_over \= True

为了使果实移动,我们需要遍历group_fruit里面的果实,然后依次将他们左移5个单位,然后我们还需要判断玩家吃到果实的场景,果实会消失,然后玩家的积分增加。

这里使用了之前学过的pygame.sprite.spritecollide(sprite,sprite_group,bool)。

调用这个函数的时候,一个组中的所有精灵都会逐个地对另外一个单个精灵进行冲突检测,发生冲突的精灵会作为一个列表返回。

这个函数的第一个参数就是单个精灵,第二个参数是精灵组,第三个参数是一个bool值,最后这个参数起了很大的作用。当为True的时候,会删除组中所有冲突的精灵,False的时候不会删除冲突的精灵。因此我们这里将第三个参数设置为True,这样就会删除掉和精灵冲突的对象了,看起来就好像是玩家吃掉了这些果实一样。

#遍历果实,使果实移动
            for e in group\_fruit:
                e.X \-=5
            collide\_list \= pygame.sprite.spritecollide(player,group\_fruit,False)
            score +=len(collide\_list)

全部的代码:

  1 # -\*- coding: utf-8 -\*-
  2 import sys, time, random, math, pygame,locale  3 from pygame.locals import \*
  4 from MyLibrary import \*
  5 
  6 #重置火箭函数
  7 def reset\_arrow():  8     y = random.randint(270,350)
  9     arrow.position = 800,y
 10     bullent\_sound.play\_sound()
 11 
 12 #定义一个滚动地图类
 13 class MyMap(pygame.sprite.Sprite): 14     
 15     def \_\_init\_\_(self,x,y):
 16         self.x = x 17         self.y = y 18         self.bg = pygame.image.load("background.png").convert\_alpha()
 19     def map\_rolling(self): 20         if self.x < -600:
 21             self.x = 600
 22         else:
 23             self.x -=5
 24     def map\_update(self): 25         screen.blit(self.bg, (self.x,self.y))
 26     def set\_pos(x,y): 27         self.x =x
 28         self.y =y
 29 #定义一个按钮类
 30 class Button(object): 31     def \_\_init\_\_(self, upimage, downimage,position):
 32         self.imageUp = pygame.image.load(upimage).convert\_alpha() 33         self.imageDown = pygame.image.load(downimage).convert\_alpha() 34         self.position = position 35         self.game\_start = False 36         
 37     def isOver(self): 38         point\_x,point\_y = pygame.mouse.get\_pos() 39         x, y = self. position 40         w, h = self.imageUp.get\_size() 41 
 42         in\_x = x - w/2 < point\_x < x + w/2
 43         in\_y = y - h/2 < point\_y < y + h/2
 44         return in\_x and in\_y 45 
 46     def render(self): 47         w, h = self.imageUp.get\_size() 48         x, y = self.position 49         
 50         if self.isOver(): 51             screen.blit(self.imageDown, (x-w/2,y-h/2))
 52         else:
 53             screen.blit(self.imageUp, (x-w/2, y-h/2))
 54     def is\_start(self): 55         if self.isOver(): 56             b1,b2,b3 = pygame.mouse.get\_pressed() 57             if b1 == 1:
 58                 self.game\_start = True 59                 bg\_sound.play\_pause()
 60                 btn\_sound.play\_sound()
 61                 bg\_sound.play\_sound()
 62 
 63 def replay\_music(): 64     bg\_sound.play\_pause()
 65     bg\_sound.play\_sound()
 66 
 67 #定义一个数据IO的方法
 68 def data\_read(): 69     fd\_1 = open("data.txt","r")
 70     best\_score = fd\_1.read() 71     fd\_1.close()
 72     return best\_score 73 
 74    
 75 #定义一个控制声音的类和初始音频的方法
 76 def audio\_init(): 77     global hit\_au,btn\_au,bg\_au,bullent\_au 78     pygame.mixer.init()
 79     hit\_au = pygame.mixer.Sound("exlposion.wav")
 80     btn\_au = pygame.mixer.Sound("button.wav")
 81     bg\_au = pygame.mixer.Sound("background.ogg")
 82     bullent\_au = pygame.mixer.Sound("bullet.wav")
 83 class Music(): 84     def \_\_init\_\_(self,sound):
 85         self.channel = None 86         self.sound = sound 87     def play\_sound(self): 88         self.channel = pygame.mixer.find\_channel(True) 89         self.channel.set\_volume(0.5)
 90         self.channel.play(self.sound)
 91     def play\_pause(self): 92         self.channel.set\_volume(0.0)
 93         self.channel.play(self.sound)
 94       
 95 #主程序部分
 96 pygame.init()
 97 audio\_init()
 98 screen = pygame.display.set\_mode((800,600),0,32)
 99 pygame.display.set\_caption("嗷大喵快跑!")
100 font = pygame.font.Font(None, 22)
101 font1 = pygame.font.Font(None, 40)
102 framerate = pygame.time.Clock()
103 upImageFilename = 'game\_start\_up.png'
104 downImageFilename = 'game\_start\_down.png'
105 #创建按钮对象
106 button = Button(upImageFilename,downImageFilename, (400,500))
107 interface = pygame.image.load("interface.png")
108 
109 #创建地图对象
110 bg1 = MyMap(0,0)
111 bg2 = MyMap(600,0)
112 #创建一个精灵组
113 group = pygame.sprite.Group()
114 group\_exp = pygame.sprite.Group()
115 group\_fruit = pygame.sprite.Group()
116 #创建怪物精灵
117 dragon = MySprite()
118 dragon.load("dragon.png", 260, 150, 3)
119 dragon.position = 100, 230
120 group.add(dragon)
121 
122 #创建爆炸动画
123 explosion = MySprite()
124 explosion.load("explosion.png",128,128,6)
125 #创建玩家精灵
126 player = MySprite()
127 player.load("sprite.png", 100, 100, 4)
128 player.position = 400, 270
129 group.add(player)
130 
131 #创建子弹精灵
132 arrow = MySprite()
133 arrow.load("flame.png", 40, 16, 1)
134 arrow.position = 800,320
135 group.add(arrow)
136 
137 
138 
139 #定义一些变量
140 arrow\_vel = 10.0
141 game\_over = False
142 you\_win = False
143 player\_jumping = False
144 jump\_vel = 0.0
145 player\_start\_y = player.Y
146 player\_hit = False
147 monster\_hit = False
148 p\_first = True
149 m\_first = True
150 best\_score = 0
151 global bg\_sound,hit\_sound,btn\_sound,bullent\_sound
152 bg\_sound=Music(bg\_au)
153 hit\_sound=Music(hit\_au)
154 btn\_sound=Music(btn\_au)
155 bullent\_sound =Music(bullent\_au)
156 game\_round = {1:'ROUND ONE',2:'ROUND TWO',3:'ROUND THREE',4:'ROUND FOUR',5:'ROUND FIVE'}
157 game\_pause = True
158 index =0
159 current\_time = 0
160 start\_time = 0
161 music\_time = 0
162 score =0
163 replay\_flag = True
164 #循环
165 bg\_sound.play\_sound()
166 best\_score = data\_read()
167 while True:
168     framerate.tick(60)
169     ticks = pygame.time.get\_ticks()
170     for event in pygame.event.get():
171         if event.type == pygame.QUIT:
172 pygame.quit()
173 sys.exit()
174     keys = pygame.key.get\_pressed()
175     if keys\[K\_ESCAPE\]:
176 pygame.quit()
177 sys.exit()
178         
179     elif keys\[K\_SPACE\]:
180         if not player\_jumping:
181             player\_jumping = True
182             jump\_vel = -12.0
183             
184 screen.blit(interface,(0,0))
185 button.render()
186 button.is\_start()
187     if button.game\_start == True:
188         if game\_pause :
189             index +=1
190             tmp\_x =0
191             if score >int (best\_score):
192                 best\_score = score
193             fd\_2 = open("data.txt","w+")
194 fd\_2.write(str(best\_score))
195 fd\_2.close()
196             #判断游戏是否通关
197             if index == 6:
198                 you\_win = True
199             if you\_win:
200                 start\_time = time.clock()
201                 current\_time =time.clock()-start\_time
202                 while current\_time<5:
203                     screen.fill((200, 200, 200))
204                     print\_text(font1, 270, 150,"YOU WIN THE GAME!",(240,20,20))
205                     current\_time =time.clock()-start\_time
206                     print\_text(font1, 320, 250, "Best Score:",(120,224,22))
207                     print\_text(font1, 370, 290, str(best\_score),(255,0,0))
208                     print\_text(font1, 270, 330, "This Game Score:",(120,224,22))
209                     print\_text(font1, 385, 380, str(score),(255,0,0))
210 pygame.display.update()
211 pygame.quit()
212 sys.exit()
213                 
214             for i in range(0,100):
215                 element = MySprite()
216                 element.load("fruit.bmp", 75, 20, 1)
217                 tmp\_x +=random.randint(50,120)
218                 element.X = tmp\_x+300
219                 element.Y = random.randint(80,200)
220 group\_fruit.add(element)
221             start\_time = time.clock()
222             current\_time =time.clock()-start\_time
223             while current\_time<3:
224                 screen.fill((200, 200, 200))
225                 print\_text(font1, 320, 250,game\_round\[index\],(240,20,20))
226 pygame.display.update()
227                 game\_pause = False
228                 current\_time =time.clock()-start\_time
229             
230         else:
231             #更新子弹
232             if not game\_over:
233                 arrow.X -= arrow\_vel
234             if arrow.X < -40: reset\_arrow()
235             #碰撞检测,子弹是否击中玩家
236             if pygame.sprite.collide\_rect(arrow, player):
237 reset\_arrow()
238                 explosion.position =player.X,player.Y
239                 player\_hit = True
240 hit\_sound.play\_sound()
241                 if p\_first:
242 group\_exp.add(explosion)
243                     p\_first = False
244                 player.X -= 10
245 
246             #碰撞检测,子弹是否击中怪物
247             if pygame.sprite.collide\_rect(arrow, dragon):
248 reset\_arrow()
249                 explosion.position =dragon.X+50,dragon.Y+50
250                 monster\_hit = True
251 hit\_sound.play\_sound()
252                 if m\_first:
253 group\_exp.add(explosion)
254                     m\_first = False
255                 dragon.X -= 10
256 
257             #碰撞检测,玩家是否被怪物追上
258             if pygame.sprite.collide\_rect(player, dragon):
259                 game\_over = True
260             #遍历果实,使果实移动
261             for e in group\_fruit:
262                 e.X -=5
263             collide\_list = pygame.sprite.spritecollide(player,group\_fruit,False)
264             score +=len(collide\_list)
265             #是否通过关卡
266             if dragon.X < -100:
267                 game\_pause = True
268 reset\_arrow()
269                 player.X = 400
270                 dragon.X = 100
271                 
272             
273 
274             #检测玩家是否处于跳跃状态
275             if player\_jumping:
276                 if jump\_vel <0:
277                     jump\_vel += 0.6
278                 elif jump\_vel >= 0:
279                     jump\_vel += 0.8
280                 player.Y += jump\_vel
281                 if player.Y > player\_start\_y:
282                     player\_jumping = False
283                     player.Y = player\_start\_y
284                     jump\_vel = 0.0
285 
286 
287             #绘制背景
288 bg1.map\_update()
289 bg2.map\_update()
290 bg1.map\_rolling()
291 bg2.map\_rolling()
292             
293             #更新精灵组
294             if not game\_over:
295                 group.update(ticks, 60)
296                 group\_exp.update(ticks,60)
297                 group\_fruit.update(ticks,60)
298             #循环播放背景音乐
299             music\_time = time.clock()
300             if music\_time   > 150 and replay\_flag:
301 replay\_music()
302                 replay\_flag =False
303             #绘制精灵组
304 group.draw(screen)
305 group\_fruit.draw(screen)
306             if player\_hit or monster\_hit:
307 group\_exp.draw(screen)
308             print\_text(font, 330, 560, "press SPACE to jump up!")
309             print\_text(font, 200, 20, "You have get Score:",(219,224,22))
310             print\_text(font1, 380, 10, str(score),(255,0,0))
311             if game\_over:
312                 start\_time = time.clock()
313                 current\_time =time.clock()-start\_time
314                 while current\_time<5:
315                     screen.fill((200, 200, 200))
316                     print\_text(font1, 300, 150,"GAME OVER!",(240,20,20))
317                     current\_time =time.clock()-start\_time
318                     print\_text(font1, 320, 250, "Best Score:",(120,224,22))
319                     if score >int (best\_score):
320                         best\_score = score
321                     print\_text(font1, 370, 290, str(best\_score),(255,0,0))
322                     print\_text(font1, 270, 330, "This Game Score:",(120,224,22))
323                     print\_text(font1, 370, 380, str(score),(255,0,0))
324 pygame.display.update()
325                 fd\_2 = open("data.txt","w+")
326 fd\_2.write(str(best\_score))
327 fd\_2.close()
328 pygame.quit()
329 sys.exit()
330     pygame.display.update()

最后 如果你对Python感兴趣的话,可以试试我整理的这份Python全套学习资料,点击这里领取!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习
⑤ 历年互联网企业Python面试真题,复习时非常方便******

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/bf698a7d4b39482e9a6c54f733945ac9.jpeg#pic_center在这里插入图片描述

Chrome小恐龙快跑小游戏——Python实现 阅读详情

相关推荐

python编写小游戏详细教程,用python制作一个小游戏

本篇文章给大家谈谈如何用python编写一个简单的小游戏,以及怎么用python制作一个小游戏,希望对各位有所帮助,不要忘了收藏本站喔。1、吃金币2、打乒乓3、滑雪4、并夕夕版飞机大战5、打地鼠6、小恐龙7、消消乐8、俄罗斯方块9、贪吃蛇10、24点小游戏11、平衡木12、外星人入侵13、贪心鸟14、井字棋888‘'关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包+项目源码合集①Python工具包②Python实战案例③

2401_84503846的博客 1890

【Pygame实战】嗷大喵历险记之程序员吸猫指南:真的太上头了~

导语 哈喽~大家好,我是木子,首先今天木子先给大家讲个小故事: 在喵界有这样一只网红——混迹于二次元、表情包界,贱萌活泼,调皮机灵,白色的大圆脸,脖子 上系了个铃铛,年龄不详,传说可于儿童、少年、青年间随意切换。 他的欢乐日常带给了很多人温暖和爆笑,他的乐观积极也是很多人治疗伤心难过空虚寂寞冷综合症 的良方,他就是——嗷大喵! ​ Ps小介绍: 嗷大喵资料:是一位开朗、乐观、热情奔放、温暖人心的喵星人。他静如瘫痪,动如癫痫,喜欢的 事情是吃和睡,他的直率和可爱还经常被人误以为是神经病呢。

顾木子吖的博客 2万+

java GUI小游戏之小鼠快跑

NULL 博文链接:https://fengyanzhang.iteye.com/blog/1884350

【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例

本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。   前几期博客我们一起学习了,pygame中的冲突检测技术以及一些常用的数据结构。 这次我们来一起做一个简单的酷跑类游戏综合运用以前学到的知识。 程序下载地址:http://yunpan.cn/cLIcJgTvq4tZS 访问密码 901f 源代码网盘地址:http://yunpan.cn/cLI...

weixin_34375251的博客 573

Python游戏嗷大喵快跑设计丨跑酷小游戏设计论文和源码

Python游戏嗷大喵快跑设计丨跑酷小游戏设计论文和源码

Python游戏嗷大喵快跑设计.zip

资源包含文件:lunwen文档word+源码+演示视频+项目截图 使用python+pygame跑酷类小游戏,一共有5关,在赢得比赛或者结束游戏的时候会有积分榜。有音效的哦,详细介绍参考:https://blog.youkuaiyun.com/sheziqiong/article/details/127345700

小白装tensorflow遇险记

最后pip install tensorflow==2.1.0 -i https://pypi.douban.com/simple。下载tensorflow时特别特别的慢,然后加了各种源都没有成功;1.装tensorflow前必须要确定版本:GPU/CPU。装gpu的前需要确定cuda和cuDNN的版本。这里zoe装的GPU的;

qq_46696179的博客 1382

音频降采样系数

如果需要把8K, 16K, 32K, 48K采样率的音频数据降为4K的音频数据, 最简单的方法根据降频倍数来取点, 但是线性度不好. 另一种线性度好一点的方法是: 取适当个数的点数, 各点乘以各自点的系数, 然后相加取平均值. 降频倍数与系数的关系如下: 2倍:     {0.3, 0.4, 0.3} 4倍:    {0.15, 0.2, 0.3, 0.2, 0.15} 8倍:   {0

joans123的专栏 4645

Python游戏嗷大喵快跑设计

本文介绍了一个基于Python和Pygame开发的横版跑酷游戏。系统采用面向对象设计方法,通过MySprite类实现游戏精灵的动画帧管理,包含角色移动、碰撞检测等功能模块。文章详细阐述了系统开发的技术路线,包括开发环境配置(PyCharm+Python)、可行性分析、功能需求设计、核心代码实现(精灵创建、滚动地图、音频加载等)以及测试方案。游戏最终实现了角色控制、怪物生成、分数计算等基本功能,并通过多张游戏截图展示了实际运行效果。系统具有操作简单、运行流畅的特点,为Python游戏开发提供了实践参考。

毕业作品网站 3741

保姆级教程:用CellOracle 0.10.13从单细胞数据构建基因调控网络(附完整代码)

本文提供了一份详细的CellOracle 0.10.13使用指南,帮助用户从单细胞数据构建基因调控网络。通过Python接口,即使是生物信息学新手也能快速掌握数据准备、KNN插补、GRN计算及可视化等关键步骤。文章包含完整代码和实用技巧,助力单细胞转录组数据分析。

weixin_42563415的博客 720

SpringCloudGateway网关高频20个面试题整理

Spring Cloud Gateway 是基于 Spring 5、Project Reactor 和 Spring Boot 2 构建的 API 网关,提供动态路由、监控、弹性、安全等核心功能。Spring Cloud Gateway 是 Spring Cloud 生态中的 API 网关,用于微服务架构中的请求路由、负载均衡、限流、鉴权等。实现@Component@Override// 逻辑处理。

u012024132的专栏 1114

游戏开发实战(一):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】

由于项目工程较大,并且我打算把我的思考过程和实现过程中踩过的坑都分享一下,因此会分3-4篇博文详细讲解本项目。本文首先介绍下游戏规则并给出奇美拉档案。

顾若茵的博客 3341

【matlab】使用alexnet进行特征提取

1.下载alexnet工具箱 在命令栏输入alexnet,若不报错说明已经安装,若出现错误按照提示去下载工具箱; 下载地址:https://ww2.mathworks.cn/matlabcentral/fileexchange/59133-deep-learning-toolbox-model-for-alexnet-network (1)需要先注册(十分简单),登陆,下载; (2)下载完成之后,...

jingjingliang1995的博客 5844

无限滚动实例_Python嗷大喵快跑小游戏开发实例

本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。前几期博客我们一起学习了,pygame中的冲突检测技术以及一些常用的数据结构。这次我们来一起做一个简单的酷跑类游戏综合运用以前学到的知识。程序下载地址:https://pan.baidu.com/s/1Ji2Ubsds6z2brBx8Gz1OOw 提取码:dff4 源代码网盘地址:https://pan.ba...

weixin_33235712的博客 411

中文文本纠错实战:pycorrector与kenlm的安装与高效使用指南

本文提供了一份详细的中文文本纠错实战指南,重点介绍了pycorrector与kenlm的安装与高效使用方法。内容涵盖从编译环境准备、依赖安装到核心参数调优、批量处理及领域自适应等全流程,旨在帮助开发者快速部署并优化纠错系统,提升中文文本处理的质量与效率。

weixin_29055699的博客 411

【AI智能体】基于OpenCode 搭建Skills环境与项目实战开发详解

基于OpenCode 搭建Skills环境与项目实战开发详解

congge 8899

python编写小游戏详细教程,python编程小游戏简单的

大家好,本文将围绕python编写小游戏详细教程展开说明,python编程小游戏简单的是一个很多人都想弄明白的事情,想搞清楚python小游戏代码大全需要先了解以下几个事情。Python为什么能这么火热?Python相对于其他语言来说比较简单,即使是零基础的普通人也能很快的掌握,在其他方面比如,处于灰色界的爬虫,要VIP的视频,小说,歌,没有爬虫解决不了的;数据挖掘及分析,淘宝就是例子,想开个淘宝店,需要获取相关商品信息,这时数据分析就能解决等等;游戏开发、自动化测试、人工智能,黑客入门语言等等等。

w666666Wwwwwww的博客 1446

合肥工业大学操作系统实验8

依据操作系统课程所介绍的地址映射与内存共享的原理,本实验的目的是深入理解物理内存的分页管理方式。 深入理解操作系统的段、页式内存管理。包括理解段表、二级页表,以及逻辑地址、线性地址、 物理地址的映射过程。编程实现段、页式内存管理上的内存共享,从而深入理解操作系统的内存管理。从而加深对教材上地址映射与内存共享的理解。

Martin-share的博客 1720

游戏开发实战(三):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】

本博文是奇美拉项目的完结篇章。

顾若茵的博客 1653

PCL 基于法线微分(DoN)的点云分割【2026最新版】

基于法线微分的分割。博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 39万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python文字游戏源代码_嗷大喵快跑小游戏python源码

# MyLibrary.pyimport sys, time, random, math, pygamefrom pygame.locals import *# prints text using the supplied fontdef print_text(font, x, y, text, color=(255,255,255)): imgText = font.render(text...

weixin_39595320的博客 866

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Python新手也能搞定的Pygame小游戏:从零开始复刻一个‘嗷大喵快跑’(附完整源码)

本文详细介绍了如何使用Pygame从零开始开发一个简单的2D游戏'嗷大喵快跑',适合Python新手学习。内容涵盖Pygame基础、游戏开发流程、核心机制实现以及优化发布技巧,并附完整源码,帮助读者快速掌握Python游戏开发入门技能。

weixin_34026997的博客 276

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python编程小游戏 五子棋,python编程小游戏源代码

大家好,本文将围绕python编程小游戏简单的例子展开说明,python编程小游戏的代码教程是一个很多人都想弄明白的事情,想搞清楚python编程小游戏超级玛丽需要先了解以下几个事情。大家好,我是辣条。今天给大家带来30个py小游戏,一定要收藏!目录有手就行1、吃金币2、打乒乓3、滑雪4、并夕夕版飞机大战5、打地鼠简简单单6、小恐龙7、消消乐8、俄罗斯方块9、贪吃蛇普普通通10、24点小游戏11、平衡木12、外星人入侵13、贪心鸟14、井字棋888‘’有点困难15、炸弹人16、保卫森林17、五子棋18、吃豆

zjl102562的博客 1634

python小游戏之一

20行python代码的入门级小游戏 20行python代码的入门级小游戏_linmo8256的博客-优快云博客_py游戏代码 猜数字小游戏python实现(可用来撩妹撩汉) 猜数字小游戏python实现(可用来撩妹撩汉)_愿十四亿神州尽舜尧-优快云博客 python打造特别火的一个小游戏,16行代码实现3D撞球小游戏! python打造特别火的一个小游戏,16行代码实现3D撞球小游戏!_weixin_33997389的博客-优快云博客 python小游戏-16行代码实现3D撞球小游戏!-

青少年趣味编程 1271
上一篇: Python读取CSV文件的几种方法!
下一篇: 教你如何用Python轻轻松松操作Excel、Word、CSV,一文就够了,建议收藏食用!!!
Python_trys
博客等级 码龄2年 4351粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值