用 Python 实现打飞机
全世界只有3.14 % 的人关注了
数据与算法之美
所用技术和软件
python 2.7
pygame 1.9.3
pyCharm
准备工作
安装好 pygame 在第一次使用 pygame 的时候,pyCharm 会自动 install pygame。
下载好使用的素材。
技术实现
初始化 pygame
首先要初始化 pygame ,之后设定一些基本的要点,比如窗口大小(尽量避免魔法数字),窗口标题以及背景图像。pygame 通过加载图片,最后返回一个 surface 对象,我们不需要关系图片的格式。但是通过 convert()
这个函数,会使我们的图片转换效率提高。
# coding=utf8
import pygame
WIDTH = 480
HEIGHT = 800
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('飞机大战')
background = pygame.image.load('resources/image/background.png').convert()
screen.fill(0)
screen.blit(background, (0, 0))
默认图片左上角为原点 (0,0)。
显示窗口
如果我们这样设定,当我们运行的时候,窗口会一闪而过,并不会出现我们想象的画面。因为窗口只是运行一下就会关闭,所以我们要写一个循环,使窗口一直保持出现。当然如果我们简单的写一个 while True那么我们的程序就出现了死循环,卡死。
所以还需要写个退出。
while True:
screen.fill(0)
screen.blit(background, (0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
显示飞机
首先我们要初始化我们的主角飞机
仍旧需要加载我们需要的资源,我们的资源文件里已经准备好各种各样的飞机,但是他们都在一张切图上。
同时我们的资源文件里还有一个叫做 shoot.pack
的文件,里面记录了每个图片所在的位置。
我们通过下面的代码加载资源图片,并且获得我们需要的主角飞机。
plane_img = pygame.image.load('resources/image/shoot.png')
player = plane_img.subsurface(pygame.Rect(0, 99, 102, 126))
将 player 显示在屏幕上,并且刷新屏幕
screen.blit(player, [100, 400])
pygame.display.update()
效果如下
让飞机 “飞” 起来
飞机已经出现在我们的屏幕上了,现在需要让飞机动起来让他可以上下左右的移动。
首先要获取键盘事件,获取键盘上什么按键被按下。
key_pressed = pygame.key.get_pressed()
通过 key_pressed
获取当前的键盘按键。并进行判断,这里写了四个函数进行对 player
移动。
if key_pressed[pygame.K_w] or key_pressed[pygame.K_UP]:
player.moveUp()
if key_pressed[pygame.K_s] or key_pressed[pygame.K_DOWN]:
player.moveDown()
if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
player.moveLeft()
if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
player.moveRight()
下一步就是完善这四个方法。
简单的说就是按下方向键的时候(w,a,s,d)飞机向四周移动,但是不能移动离开屏幕。
此时我们就应该把我们的飞机形成一个类,类里面有控制飞机的方法。
这里写类比较麻烦一点
Player的出现
首先要明确一点,这个类需要什么。
我们之前对 player
有什么操作?定义了他的图片和他出现的位置。所以我们的构造方法就要初始化这些值。
所有的这些对象,我们在 pygame
里叫做精灵(sprite),这个概念也在其他游戏开发中使用。
class Player(pygame.sprite.Sprite):
def __init__(self, plane_img, player_rect, player_position):
pygame.sprite.Sprite.__init__(self)
self.img = plane_img.subsurface(player_rect)
self.rect = player_rect
self.rect.topleft = player_position
简单的说就是获取飞机的图片,初始化飞机的矩形区域。rect
该属性会获得四个值。分别是左上角 x
,y
坐标,矩形的宽度。topleft
初始化飞机的左上角坐标,也就是飞机出现的位置。如下图所示。
player的控制
当飞机出现了,我们就应该实现我们在循环里写的方法。我们首先要判断它还在不在屏幕内,不能让飞机飞出屏幕。可以通过 rect.top
,rect.bottom
,rect.left
,rect.right
四个方法获取飞机图片的上下左右四个边界值。
这样我们就能对飞机进行判断
def moveUp(self):
if self.rect.top <= 0:
self.rect.top = 0
else:
self.rect.top -= self.move
def moveDown(self):
if self.rect.bottom >= HEIGHT:
self.rect.bottom = HEIGHT
else:
self.rect.bottom = self.move
def moveLeft(self):
if self.rect.left <= 0:
self.rect.left = 0
else:
self.rect.left -= self.move
def moveRight(self):
if self.rect.right >= WIDTH:
self.rect.right = WIDTH
else:
self.rect.right = self.move
这里的 move
是我们对飞机的移动的位移定义的常量。
让子弹飞
子弹要沿着发射方向射出去。可以在屏幕上一直移动,直到移出屏幕。
我们只要有定义一个子弹对象,让这个对象显示在屏幕上就可以。
先定义飞机子弹类,基本和定义 player
一样,获得图片,裁剪图片,设置图片初始位置,在屏幕上显示图片
class Bullet(pygame.sprite.Sprite):
def __init__(self, bullet_image, bullet_position):
pygame.sprite.Sprite.__init__(self)
self.image = bullet_image
self.rect = self.image.get_rect()
self.rect.midbottom = bullet_position
# 省略其他代码
# 加载子弹图片
bullet_rect = pygame.Rect(69, 78, 9, 21)
bullet_img = plane_img.subsurface(bullet_rect)
# 省略其他代码
while True:
# 省略其他代码
screen.blit(bullet.img, bullet.rect)
# 省略其他代码
运行结果
下一步就是让飞机的子弹跟随飞机。
我们需要在 Player 类里面添加方法。
首先我们规定,按下空格发射子弹。
if key_pressed[pygame.K_SPACE]:
player.shoot()
完善shoot方法。子弹类已经有了,我们每次只要在按下空格的时候创建一个对象就好。
首先要每次传入一个子弹的图像,然后还有出现位置,这样子弹才能跟随飞机。
定义一个pygame.sprite.Group()
来存放精灵组。这样我们就能把我们的子弹都放进去。
def shoot(self, bullet_img):
bullet = Bullet(bullet_img, self.rect.midtop)
self.bullets.add(bullet)
每次按下空格的时候传入一个子弹图片
if key_pressed[pygame.K_SPACE]:
player.shoot(bullet_img)
最后我们只需要在屏幕上进行子弹的绘制即可。
player.bullets.draw(screen)
这样我们的子弹就会跟随飞机出现。
下一步就是让子弹在屏幕上移动。
创建移动的方法。
def move(self):
self.rect.top -= self.move
因为我们的子弹在 bullets 里,所以我们仅需要一个循环,遍历每个子弹,之后移动即可。当子弹移出屏幕的时候我们只要在 bullets
中移出就可以。
for bullet in player.bullets:
bullet.bulletMove()
if bullet.rect.bottom < 0:
player.bullets.remove(bullet)
结果
这个和我们的预期还是有差别的,频率太快了。
关于pygame 的键盘重复事件 官方好像并没有这个设置。那么我们只能在添加一个计数器,通过计算器的数值来判断子弹是否发射。这里的数值是多次测试后,自己感觉一个比较满意的频率。可以自己调整。
# 省略其他代码
# 子弹频率
SHOOT_PC = 0
在键盘事件中我们需要判断频率。
if key_pressed[pygame.K_SPACE]:
SHOOT_PC = SHOOT_PC 1
if SHOOT_PC % 400 == 0:
player.shoot(bullet_img)
player 的飞机就算基本绘制好了
绘制敌机
下一步就是绘制敌机。敌机是从屏幕上方移动到屏幕下方。我们任就需要一个类来设置敌机。设置类任就和我们前面的差不多,加载资源,设置 rect
,设置位置。
# 加载敌机图片
enemy_rect = pygame.Rect(267, 347, 57, 51)
enemy_img = plane_img.subsurface(enemy_rect)
enemy_position = [200, 200]
enemy = Enemy(enemy_img, enemy_position)
# 敌机类
class Enemy(pygame.sprite.Sprite):
def __init__(self, enemy_img, enemy_position):
pygame.sprite.Sprite.__init__(self)
self.image = enemy_img
self.rect = self.image.get_rect()
self.rect.topleft = enemy_position
最后在屏幕显示出来
1
screen.blit(enemy_img, enemy_rect)
现在我们就应该想想敌机的特点了,其实他和子弹的特点基本一直,只不过方向不一样而已。还有一点是敌机是随机生成的。
# 敌机计数器
EnEMY_PC = 0
# 省略代码
enemy_position = [random.randint(0, WIDTH - enemy_rect.width), 0]
enemy = Enemy(enemy_img, enemy_position)
enemies.add(enemy)
我们随机在顶部生成飞机。
这个方式的情况和子弹其实差不多,我们应该给出现敌机确定一个频率。
if EnEMY_PC % 500 == 0:
enemy_position = [random.randint(0, WIDTH - enemy_rect.width), 0]
enemy = Enemy(enemy_img, enemy_position)
enemies.add(enemy)
EnEMY_PC = EnEMY_PC 1
这样的话出现情况就变得缓慢。下一步实现敌机的移动。敌机的移动原理和子弹的移动其实也是一样的。不多解释
移动方法
def enemyMove(self):
self.rect.top = self.move
移动实现
for enemy in enemies:
enemy.enemyMove()
if enemy.rect.top > HEIGHT:
enemies.remove(enemy)
enemies.draw(screen)
碰撞检测
飞机和敌机还有子弹都有了,我们现在需要进行完成碰撞检测。有下面几种场景。
敌机和玩家碰撞在一起
子弹和敌机碰撞在一起
无论是那种情况的碰撞,其实就是两张图片有了交集。
如图
pygame 给我们提供了碰撞检测的方法。首先两个对象必须是 sprite
。通过 pygame.sprite.collide_rect()
进行碰撞检测。
我们先进行一个测试
if pygame.sprite.collide_rect(enemy, player):
print '检测成功'
结果
检测成功
此时我们就可以完成,当玩家和敌机发生碰撞,游戏结束,当子弹和敌机碰撞,敌机消失。
同样的 pygame 给我们提供了一个 pygame.sprite.groupcollide()
用于 Group
之间的碰撞检测.当发生碰撞的时候这两个对象都会在 Group
中移出。
用于检测敌机和子弹
pygame.sprite.groupcollide(enemies, player.bullets, 1, 1)
敌机和子弹的关系已经和好的处理。
处理敌机和玩家飞机的关系。
我们需要在 Player
里添加一个属性判断当前玩家是否被击中的 boolean
值.当集中的时候把属性改为 True
.当为 True
的时候游戏结束.也就是我们一开始设置的循环就会结束.所以我们需要更改之前写的一些代码,使它更加完善。
在 Player 类里面添加是否击中属性。
self.is_hit = False
修改循环
RUN = True
while RUN:
# 省略代码
if pygame.sprite.collide_rect(enemy, player):
player.is_hit = True
RUN = False
# 省略代码
执行结果
当玩家被击中的时候,在显示一张 GameOver 图片提示
gameOver = pygame.image.load('resources/image/gameover.png')
while GAMEOVER:
screen.fill(0)
screen.blit(gameOver, (0, 0))
pygame.display.update()
# 退出程序
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
做到这里基本算是实现了飞机大战.但是还有很多细节处理。
细节处理
精细的碰撞检测
从图上看,当敌机看似还没有和我们接触时,但是已经 GameOver 了。
实际情况是这样的,所有的图片都是矩形,当两张图片的矩形边框线碰撞的时候,就算两个对象碰撞,所以我们要更加精细的使用碰撞检测。
我们可以按着图片中心的某个长度为半径,在这个半径内发生碰撞才是碰撞。
pygame 给我们提供了这样的方法。pygame.sprite.collide_circle_ratio()
可以自己算出一个半径,作为检测半径。并且可以做出一个有效检测的百分比。
if pygame.sprite.collide_circle_ratio(0.6)(player, enemy):
player.is_hit = True
RUN = False
同样,子弹和敌机也可以修改,让碰撞检测更加精细。
修改后面的两个参数,使得碰撞检测更加精细。
pygame.sprite.groupcollide(enemies, player.bullets, 0.6, 0.8)
动画
做了怎么就,感觉它没有一点动效,感觉死气沉沉的。无论是飞机飞行,还是飞机被击中,都没有一个明确的反馈。
对于2d游戏,动画其实就是一张一张的图片不停的变化。就和电影的原理类似。要想让我们的飞机动起来,我们需要定义一个列表来存放这些图片,然后写个循环,让他一直不停的更换图片就好。
首先我们更改我们的主角 Player
任就是老套路,加载图片。把加载的图片放到list 里。
player_rect = [pygame.Rect(0, 99, 102, 126),
pygame.Rect(165, 360, 102, 126),
pygame.Rect(165, 234, 102, 126),
pygame.Rect(330, 624, 102, 126),
pygame.Rect(330, 498, 102, 126),
pygame.Rect(432, 624, 102, 126)]
player_position = [100, 400]
player = Player(plane_img, player_rect, player_position)
之后在 Player
添加循环的方法。获取图片。
class Player(pygame.sprite.Sprite):
def __init__(self, plane_img, player_rect, player_position):
pygame.sprite.Sprite.__init__(self)
self.image = []
for i in range(len(player_rect)):
self.image.append(plane_img.subsurface(player_rect[i]).convert_alpha())
self.rect = player_rect[0]
self.rect.topleft = player_position
self.img_index = 0
self.move = 1
self.bullets = pygame.sprite.Group()
self.is_hit = False
飞机正常飞行的图片只有两张。所以我们要循环变化这两张图片。所以每发射一个子弹,图片变化两张。
screen.blit(player.image[player.img_index], player.rect)
player.img_index = SHOOT_PC / 248
# 省略代码
if key_pressed[pygame.K_SPACE]:
if SHOOT_PC % 495 == 0:
player.shoot(bullet_img)
SHOOT_PC = SHOOT_PC 1
if SHOOT_PC >= 495:
SHOOT_PC = 0
正常发射子弹的动画效果已经做完。我们还需要进行被击中爆炸的动画效果。
击中的原理和正常也一样。只不过先要判断当前飞机状态,是否被击中。
if not player.is_hit:
screen.blit(player.image[player.img_index], player.rect)
player.img_index = SHOOT_PC / 248
else:
player.img_index = player_shoot / 248
screen.blit(player.image[player.img_index], player.rect)
player_shoot = 30
if player_shoot > 495:
RUN = False
# 省略代码
if pygame.sprite.collide_circle_ratio(0.6)(player, enemy):
player.is_hit = True
248
,30
,495
,1457
这些数字是什么?如何计算出来的。先说 495
这个数字。
495 这个数字很随便,只是控制子弹的发射间隔。完全可以自定义。但是495这个数字一旦确定,其他三个数字基本确定。
248 为 495 的一半,因为发射一个子弹,图片要变化两张。
30 这个数字基本也是自定义的,只要比1大就好,他影响了结束动画出现的时间。
1488 这个数字是通过 248 确定的,是 248 的 6倍,因为飞机被射击后会有四张图片的显示。
同理,把敌机接触子弹的动画写出来。
加载图片
enemies_shoot_img = [plane_img.subsurface(pygame.Rect(267, 347, 57, 43)),
plane_img.subsurface(pygame.Rect(873, 697, 57, 43)),
plane_img.subsurface(pygame.Rect(267, 296, 57, 43)),
plane_img.subsurface(pygame.Rect(930, 697, 57, 43))]
同样我们需要创建 Group() 来存放被击中的敌机。
enemies_shoot = pygame.sprite.Group()
之后的处理逻辑基本相似,不多介绍
for enemy in enemies:
enemy.enemyMove()
if pygame.sprite.collide_circle_ratio(0.6)(player, enemy):
enemies_shoot.add(enemy)
enemies.remove(enemy)
player.is_hit = True
break
if enemy.rect.top > HEIGHT:
enemies.remove(enemy)
for enemy_shoots in enemies_shoot:
if enemy_shoots.shoot_index == 0:
pass
if enemy_shoots.shoot_index > 70:
enemies_shoot.remove(enemy_shoots)
continue
screen.blit(enemy_shoots.shoot_imgs[enemy_shoots.shoot_index / 20], enemy_shoots.rect)
enemy_shoots.shoot_index = 1
这样的话基本完成了动画效果。
音乐
有了动画还的有音乐。
音乐的处理只要在特定的地方播放音乐就好,比如子弹发射的时候,背景音乐,被击中的时候,游戏结束的时候,等等。他们的处理逻辑都一样。先加载资源,然后在播放。
背景音乐的播放。
pygame
在处理背景音乐的时候都在 pygame.mixer
方法中。其中播放音乐的play中的参数,第一个为播放几次,-1 为循环播放,后面的浮点表示 从第几秒开始播放。
backgroundMusic = pygame.mixer.music.load('resources/sound/game_music.mp3')
pygame.mixer.music.play(-1, 0.0)
其他的音乐先加载资源,在需要的地方播放。
发射子弹
def shoot(self, bullet_img):
shootMusic = pygame.mixer.Sound('resources/sound/bullet.mp3')
bullet = Bullet(bullet_img, self.rect.midtop)
self.bullets.add(bullet)
shootMusic.play()
其他音乐处理一样,不多解释。
分数&等级
分数
首先绘制得分情况,在屏幕上显示多少分。
绘制字体基本和绘制精灵是差不多的。首先要生成字体
两个参数分别是字体和字号
score_font = pygame.font.Font(None, 36)
有了字体那么需要写点字。
score_font.render("分数",True,(0,0,0),(255,255,255))
第一个参数是写的文字;第二个参数是个布尔值,以为这是否开启抗锯齿,就是说True的话字体会比较平滑,不过相应的速度有一点点影响;第三个参数是字体的颜色;第四个是背景色,如果你想没有背景色(也就是透明),那么可以不加这第四个参数
字体也有了,文本也有了,下一步就是绘制。通过 get_rect()
获得矩形,之后绘制和精灵绘制方法一样
score_font = pygame.font.Font(None, 36)
score_text = score_font.render('分数:0', True, (128, 128, 128))
text_rect = score_text.get_rect()
text_rect.topleft = [10, 10]
screen.blit(score_text, text_rect)
分数已经显示了,就可以积分。我们每击落一个飞机增加 100 分。
if enemy_shoots.shoot_index > 70:
enemies_shoot.remove(enemy_shoots)
score = 100
continue
我们还需要在文本的地方强制转换为 str 。
score_text = score_font.render(str(score), True, (128, 128, 128))
等级
有了分数,那么再加点等级会使游戏更加有趣味性。
同样的先绘制等级。
level_font = pygame.font.Font(None, 42)
level_text = level_font.render('Level 'str(level), True, (128, 128, 128, 128))
level_rect = level_text.get_rect()
level_rect.midtop = [240, 10]
screen.blit(level_text, level_rect)
下一步就是写等级函数。
随着分数的增加,等级增加,飞机变多,等等。
首先写分数和等级的关系。
随便瞎写的函数
if score == 100 \* (level ** 2 \ level):
level = 1
这个是控制敌机数量的,我们可以设定一个变量,使敌机越来越多。
if ENEMY_PC % 500 == 0:
每增加一级,就添加敌机数量。等级也不能一直增加,所以当等级是摸个值的时候,就算最高级别了。
if score == 100 \* (level ** 2 \ level):
level = 1
if level != 10:
enemy_add -= 20
基本到这里算是写了一个相对完整的游戏。
超模君准备了几份 数学思维好物
《超模定制笔记本》《数学原来会说谎》
《数学的故事》《简单微积分》......
免费 送给大家,参与就有机会获得
原文地址:
http://youngxhui.top/2017/06/22/python-%E5%AE%9E%E7%8E%B0%E5%BE%AE%E4%BF%A1%E6%89%93%E9%A3%9E%E6%9C%BA/#hcq=Y6ZlhXq
版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。
精品课程推荐:
选购数学科普正版读物
严选“数学思维好物”
送给孩子的益智礼物 | 办公室神器
算法工程师成长阅读 | 居家高科技
理工科男女实用型礼物精选
----点击头像关注----
超级数学建模
数据与算法之美
少年数学家
数锐学堂
惊喜酱(个人号)
玩酷屋COOL
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 511遇见易语言数组操作清除数组和数组清零
清除数组和数组清零是易语言数组操作中两个容易混淆的命令,视频教程举例做了示范。511遇见易语言教程官方文档清除数组 调用格式: 〈无返回值〉 清除数组 (通用型变量数组 欲删除成员的数组变量) - 系统核心支持库->数组操作 英文名称:RemoveAll 删除指定数组变量中的所…...
2024/3/15 20:22:12 - 又是一年读书日,这十本书你居然还没读过?
世界读书日已到来。“华科公管学习部”联合“武大政管学习部”在人文与社科领域荐书阅读,旨在培养大家的阅读与写作兴趣,享受阅读的乐趣,尊重知识与创作。与当今流行的各大高校校长荐书不同,我们从学生的角度,从我们的阅读经历、阅读体验,甄选出以下十本书籍,为大家打开…...
2024/3/29 9:31:12 - Python飞机大战|10分钟学会用python写游戏(内附教程分享)
2018年python语言大火,这把火看趋势已然延续到了2019年!除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,我将按照正规的项目开发流程,手把手教大家写个python小游戏,游戏的名字叫做alien invasion!安装pygame并创建能左右移动的飞船安装…...
2024/3/15 20:22:08 - 511遇见易语言数组加入成员
易语言数组操作加入成员()和插入成员()容易混淆,本来打算一起讲解这两个命令,但备课的时候发现内容较多,本课通过6个实例讲解了命令的运用。511遇见易语言教程官方源码:调用格式: 〈无返回值〉 加入成员 (通用型变量数组 欲加入成员的数组变量,通用型数组/非数组 欲…...
2024/3/15 15:02:57 - 【历史】衣米魔兽怀旧服发展历史事件以及衣米魔兽重要玩家传记
衣米魔兽世界怀旧服官方网站目录《衣米魔兽》与「王乾亨」的情怀《衣米魔兽世界怀旧服》: <发展历程> 以及 <相关历史事件> 传记「衣米魔兽世界怀旧服发展简史」发展历程简介<衣米魔兽>2012年历史事件2012年08月2012年11月2012年12月<衣米魔兽>201…...
2024/3/13 16:51:01 - 软件测试之实用小工具推荐
1.Snipaste截图工具Snipaste是一款占用内存很小而且免费的截图软件,在windows的商城中即可找到这款软件并下载安装,安装后他会一直后台运行,直到你唤醒他的时候再出现;使用Snipaste截图主要有两种方式,一种是使用快捷键截图,默认操作是【F1】键,点击键盘上的【F1】键,即…...
2024/3/13 16:50:58 - 初学易语言,所要准备些什么书籍与资料
1、找一本易语言入门教程(百度一下)一步步学习,不要凭感觉去鼓捣,毕竟这是编程,是要打好基础的。 2、学习的过程中,对当前的知识点要搞懂搞通,书上没说明白的,就去看帮助文档,去交流论坛问明白,不能马马虎虎地就学过去了,否则后面更深的知识点会让你无所适从。 3、一…...
2024/3/13 16:50:59 - 震惊!QWidget竟然可以嵌入到QML中,QMl窗口句柄竟然是这样获取
背景记得在初学qml时,就被大佬告知Qml的实现有两种方式“view+item”和“engine+widow”,那么能不能将QWidget嵌入到QML中来呢,我收到的答案是不可以,原因是QML的窗口句柄获取不到,但是,要想用原来的win32解码时就需要用到窗口句柄,但是我辛辛苦苦学的qml又不想放弃,于…...
2024/3/19 0:03:15 - 511遇见易语言数组插入成员
本课视频教程主要讲解了易语言数组操作命令中的插入成员()的注意事项,以及和加入成员()命令的区别,通过两个示范来强化巩固命令的运用。511遇见易语言教程官方文档调用格式: 〈无返回值〉 插入成员 (通用型变量数组 欲插入成员的数组变量,整数型 欲插入的位置,通用型…...
2024/3/28 5:28:29 - 简易小游戏(类似打飞机)的简单实现cocos2d-x-2.1.5
之前制作的简单的一个小游戏,整理之后分享一下,只是最初的版本,后续完善版本不方便公布。 先看看最终示意图吧如图所示,怪物由上至下移动,有五条道路,底部有一塔在攻击。 首先就是加载地图了//=========加载背景图========CCTMXTiledMap* tmxmap = CCTMXTiledMap::create…...
2024/3/18 12:38:29 - 中国互联网最赚钱的十位草根人物 DotA解说海涛年入千万
http://www.yxdown.com/news/201305/89600.html互联网作为现今传递消息最快的平台,其幕后牵扯到的利益也是巨大的——这也让许多草根网民们有了赚钱的机会。虽然他们也是网络Soho一族,但是收获的名利却十分惊人,他们依靠当代互联网特殊的情境成为了新时代的明星,一根网线,…...
2024/3/26 23:38:00 - pygame编写飞机大战(9)-播放爆炸动画
当子弹和敌机碰撞,我们并不像单单将飞机和子弹消失,应该在其发生碰撞的位置播放一组爆炸动画,游戏效果更为逼真一些。那如何实现动画呢?动画实现思路很简单,我们将一组图片按照一定的时间间隔,将其按顺序绘制到屏幕上,即可显示为动画效果。这几张图片,我们首先将其load…...
2024/3/29 1:32:27 - 十天学会易语言图解教程电子书
给大家分享个自己整理制作的十天学会易语言图解教程电子书,想学习易语言的网友有福了!~ 下载地址转载于:https://blog.51cto.com/haiyang457/1151670...
2024/3/24 23:56:00 - MATLAB画图标题中包含下划线的正确显示方法
以前用Matlab画图时,时常用title函数来显示一下图像标题,但是当标题的字符串中包含下划线即这个__ 时,并直接传一个字符串到title函数中即title(str),结果老是显示不正确,这虽不影响图像的整体性,但总是不尽人意嘛,当时也不知道怎么处理,今天处理一个问题时在help文档中…...
2024/3/22 5:22:10 - 《魔兽世界》10个让你感动流泪的故事
1.最后的国王护卫者一位名为“Plapla”的联盟圣骑士玩家挫败了这次攻击。当部落军团一路势如破竹地杀到铁炉堡国王的王座时,Plapla已站在国王的身前,手持一把名为“国王护卫者”的剑,顶着头上意味着成为靶子的标记,面对前方数十倍于自己的对手,喊出了《指环王》中甘道夫一…...
2024/3/28 4:01:21 - C#仿微信飞机大战_改版
习惯性来张美女消消暑,天气真的好热 7月一天,忽然发现10岁的儿子 (不好,暴露自己年龄了!)骨骼惊奇,天资聪慧, 是当程序猿的材料(算不算子承父业,希望不是害了我儿啊), 故打起教他学习一门语言的念头。 C++对他太难, C#吧,简单易上手,毕竟我儿才10岁不到。 开始的…...
2024/3/15 20:21:59 - 易语言打印九九乘法表
今天再分享易语言打印的九九乘法表源码:易语言教程变量循环首(九九乘法表)易语言教程计次循环首(九九乘法表)九九乘法表源码.版本 2 .子程序 九九 .局部变量 a, 整数型, , "0" .局部变量 i, 整数型 .局部变量 z, 整数型 .局部变量 jg, 文本型 .计次循环首 (9, i…...
2024/3/29 1:21:59 - 冲突家族秘籍的Android没有调查没有密码
冲突家族秘籍的Android没有调查没有密码 的冲突有关氏族源信息::资讯,技巧,文章和新闻:: 氏族 冲突:氏族战争“预备日”讨论 作为氏族氏族战争概述事先冲突解释,纪念日协会的战争将会破坏成几个阶段:警觉节和行动日。周年外观持续24小时,使您能够实现…...
2024/3/15 20:21:56 - 用 Python 实现打飞机,让子弹飞吧!
所用技术和软件python 2.7pygame 1.9.3pyCharm准备工作安装好 pygame 在第一次使用 pygame 的时候,pyCharm 会自动 install pygame。下载好使用的素材。技术实现初始化 pygame首先要初始化 pygame ,之后设定一些基本的要点,比如窗口大小(尽量避免魔法数字),窗口标题以及背…...
2024/3/15 20:21:56 - 宝明易语言第四期教程
课宝明易语言认识初体验 学习:点我吧 第2课编写第一个程序之信息框运用 第3课编辑框按钮组件与命令运用学习 第4课制作简易登陆工具之如果命令学习运用 第5课单选框选择框组件与如果真命令学习运用 第6课数据类型与常量变量的认识运用 第7课写简单计算器组合框与数据类型转换类…...
2024/3/26 23:26:14
最新文章
- 五种免费的Python开发环境及具体下载网址
五种免费的Python开发环境及具体下载网址 目录 五种免费的Python开发环境及具体下载网址1.Anaconda2.PyCharm Community Edition3.Visual Studio Code4.Jupyter Notebook5. WinPython Python编程可选择不同的开发工具环境进行,本文介绍五种常用的,读者可…...
2024/3/29 15:35:16 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 供应链攻击揭秘:识别、防范与应对
供应链攻击是网络安全领域的一种新兴威胁,它利用供应链中的漏洞对目标进行攻击。本文将介绍供应链攻击的概念、类型、危害,并通过具体案例阐述其影响,同时探讨如何防范供应链攻击,以提高人们对供应链攻击的认识和防范意识。 一、引…...
2024/3/28 23:15:12 - 在 Linux/Ubuntu/Debian 上安装 SQL Server 2019
Microsoft 为 Linux 发行版(包括 Ubuntu)提供 SQL Server。 以下是有关如何执行此操作的基本指南: 注册 Microsoft Ubuntu 存储库并添加公共存储库 GPG 密钥: sudo wget -qO- https://packages.microsoft.com/keys/microsoft.as…...
2024/3/29 7:28:06 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/3/27 10:21:24 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/3/24 20:11:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/3/29 2:45:46 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/3/24 20:11:23 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/3/29 5:19:52 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/3/28 17:01:12 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/3/29 11:11:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/3/29 1:13:26 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/3/29 8:28:16 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/3/29 7:41:19 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/3/24 20:11:18 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/3/29 9:57:23 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/3/29 0:49:46 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/3/24 20:11:15 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/3/27 7:12:50 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/3/24 20:11:13 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/3/26 11:21:23 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/3/28 18:26:34 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/3/28 12:42:28 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/3/28 20:09:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57