小遊戲的製作
這星期長見識了,雖然每星期都在學習新的內容,都在長見識,但是這次挺驚訝的,竟然可以用python,vi,等結合起來做小遊戲,然後懂得了做遊戲的原理,知道了怎麼做遊戲。雖然可能只懂的
簡單的小遊戲製作,但是感覺也挺厲害的。真的是長見識了!
1 import random
2 import pygame
3 SCREEN_RECT = pygame.Rect(0,0,480,700)
4 FRAME_PER_SEC = 60
5 CREATE_ENEMY_EVENT =pygame.USEREVENT
6 CREATE_BULLET_EVENT =pygame.USEREVENT + 1
7
8 class GameSprite(pygame.sprite.Sprite):
9 def __init__(self,image_name,speed=1):
10 super().__init__()
11
12 self.image = pygame.image.load(image_name)
13 self.rect = self.image.get_rect()
14 self.speed = speed
15
16
17
18 def update(self):
19 self.rect.y += self.speed
20
21 class Background(GameSprite):
22 def __init__(self,is_alt=False):
23 image_name = "./images/background.png"
24 super().__init__(image_name)
25 if is_alt:
26 self.rect.y = -self.rect.height
27
28 def update(self):
29 super().update()
30 if self.rect.y > SCREEN_RECT.height:
31 self.rect.y = -self.rect.height
32
33 class Enemy(GameSprite):
34 def __init__(self):
35 image_name = "./images/enemy-1.gif"
36 super().__init__(image_name)
37 self.speed = random.randint(1,3)
38 max_x = SCREEN_RECT.width - self.rect.width
39 self.rect.x = random.randint(0,max_x)
40 self.rect.bottom = 0
41 def update(self):
42 super().update()
43 if self.rect.y >= SCREEN_RECT.height:
44 self.kill()
45 def __del__(self):
46 pass
47 class Hero(GameSprite):
48 def __init__(self):
49 image_name = "./images/hero.gif"
50 super().__init__(image_name,0)
51 self.speed1 = 0
52 self.rect.centerx = SCREEN_RECT.centerx
53 self.rect.bottom = SCREEN_RECT.bottom - 120
54 self.bullet_group = pygame.sprite.Group()
55 def update(self):
56 self.rect.x +=self.speed
57 self.rect.y += self.speed1
58 if self.rect.left < 0:
59 self.rect.left = 0
60 if self.rect.right > SCREEN_RECT.width:
61 self.rect.right = SCREEN_RECT.width
62
63 def fire(self):
64 bullet = Bullet()
65
66 bullet.rect.bottom = self.rect.y - 20
67 bullet.rect.centerx = self.rect.centerx
68 self.bullet_group.add(bullet)
69 class Bullet(GameSprite):
70 def __init__(self):
71 image_name = "./images/bullet1.png"
72 super().__init__(image_name,-10)
73 def update(self):
74 super().update()
75 if self.rect.bottom < 0:
76 self.kill()
這是設定基礎命令 和條件
1 import pygame
2 from PlanSprite import *
3 class PlaneGame(object):
4 def __init__(self):
5 self.screen = pygame.display.set_mode(SCREEN_RECT.size)
6 self.clock = pygame.time.Clock()
7 self.__create_sprites()
8 pygame.time.set_timer(CREATE_ENEMY_EVENT,1000)
9 pygame.time.set_timer(CREATE_BULLET_EVENT,500)
10 self.enemy_group = pygame.sprite.Group()
11 def __create_sprites(self):
12 bg1 = Background()
13 bg2 = Background(True)
14 self.back_group = pygame.sprite.Group(bg1,bg2)
15
16 self.hero = Hero()
17 self.hero_group = pygame.sprite.Group(self.hero)
18 def start_game(self):
19 print("開始遊戲")
20 while True:
21 self.clock.tick(FRAME_PER_SEC)
22 self.__event_handler()
23 self.__check_collide()
24 self.__update_sprites()
25 pygame.display.update()
26 def __event_handler(self):
27 for event in pygame.event.get():
28 if event.type == pygame.QUIT:
29 planeGame.__game_over()
30 elif event.type == CREATE_ENEMY_EVENT:
31 enemy = Enemy()
32 self.enemy_group.add(enemy)
33 elif event.type == CREATE_BULLET_EVENT:
34 self.hero.fire()
35 keys_pressed = pygame.key.get_pressed()
36 if keys_pressed[pygame.K_RIGHT]:
37 self.hero.speed = 2
38 self.hero.speed1 = 0
39 elif keys_pressed[pygame.K_LEFT]:
40 self.hero.speed = -2
41 self.hero.speed1 = 0
42 elif keys_pressed[pygame.K_UP]:
43 self.hero.speed1 = -2
44 self.hero.speed = 0
45 elif keys_pressed[pygame.K_DOWN]:
46 self.hero.speed1 = 2
47 self.hero.speed = 0
48 else:
49 self.hero.speed1 = 0
50 self.hero.speed = 0
51 def __check_collide(self):
52 b = pygame.sprite.groupcollide(self.hero.bullet_group,self.enemy_group,True,True)
53 print(b)
54 enemies = pygame.sprite.spritecollide(self.hero,self.enemy_group,True)
55 if len(enemies) > 0:
56 self.hero.kill()
57 planeGame.__game_over()
58 def __update_sprites(self):
59 self.back_group.update()
60 self.back_group.draw(self.screen)
61
62 self.enemy_group.update()
63 self.enemy_group.draw(self.screen)
64
65 self.hero_group.update()
66 self.hero_group.draw(self.screen)
67
68 self.hero.bullet_group.update()
69 self.hero.bullet_group.draw(self.screen)
70 @staticmethod
71 def game_over():
72 pygame.quit
73 exit()
74 if __name__ =="__main__":
75 game = PlaneGame()
76 game.start_game()
這裡是執行的命令
上面圖片是執行後的效果,自己目前沒學太明白,還可以繼續加強,設定分數,加入一些特殊道具等。
相關文章
- Python製作太空射擊小遊戲!Python遊戲
- 微信吸粉小遊戲怎麼製作?中秋節微信公眾號吸粉小遊戲製作教程遊戲
- html畫布製作貪吃蛇小遊戲HTML遊戲
- GUI 基於Swing製作貪吃蛇小遊戲GUI遊戲
- Vue+WebSocket+ES6+Canvas 製作【你畫我猜】小遊戲VueWebCanvas遊戲
- pyqt5製作俄羅斯方塊小遊戲-----原始碼解析QT遊戲原始碼
- 3個Web入門小遊戲,製作只需基礎三劍客Web遊戲
- python手機版做小遊戲程式碼大全-python簡單小遊戲程式碼 怎麼用Python製作簡單小遊戲...Python遊戲
- Dockerfile映象的製作Docker
- 新年創意H5!千萬別錯過的新年搶紅包H5小遊戲製作攻略H5遊戲
- Html 製作HTML
- 簡單的製作frameworkFramework
- 安卓.9圖的製作安卓
- 網站的初步製作網站
- 程式設計師大神,C語言程式設計製作不一樣的五子棋小遊戲程式設計師C語言遊戲
- 工作流程圖怎麼製作,有哪些製作流程圖的工具?流程圖
- 有什麼好用的gif製作軟體 製作GIF表情包教程
- 製作遊戲的遊戲:創作樂趣的樂趣遊戲
- 價目表製作報價單製作軟體
- 簡單的網頁製作網頁
- 製作URL檔案的方法
- PHP驗證碼的製作PHP
- canvas繪製“飛機大戰”小遊戲,真香!Canvas遊戲
- 製作原生APPAPP
- 地圖製作地圖
- 如何製作DVDrip?
- 網頁製作時可以拿起就用的網頁製作小技巧總結網頁
- 電腦製作excel表格全步驟 excel製作表格的步驟教程Excel
- excel製作表格時 怎麼製作Excel斜表頭Excel
- 底層搭建:踏入動作遊戲的製作階段遊戲
- 藉助實時資料推送快速製作線上對戰五子棋小遊戲丨實戰遊戲
- 從零開始製作微信小遊戲-彈一弾,純原生Canvas與物理引擎Matter.js應用遊戲CanvasJS
- IOS的Bundle資源束製作iOS
- [譯] 製作 Vue 3 的過程Vue
- Docker如何製作映象-Dockerfile的使用Docker
- 製作容器映象的最佳實踐
- 製作郵件模板的規範
- CSS動畫製作綻放的花朵CSS動畫