小遊戲的製作
這星期長見識了,雖然每星期都在學習新的內容,都在長見識,但是這次挺驚訝的,竟然可以用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遊戲
- 製作遊戲人物頭部的21個小技巧遊戲
- 微信吸粉小遊戲怎麼製作?中秋節微信公眾號吸粉小遊戲製作教程遊戲
- 製作遊戲的遊戲:創作樂趣的樂趣遊戲
- 製作3D小汽車遊戲(上)3D遊戲
- 製作3D小汽車遊戲(下)3D遊戲
- GUI 基於Swing製作貪吃蛇小遊戲GUI遊戲
- 如何用Python製作自己的遊戲Python遊戲
- 使用Unity製作遊戲AIUnity遊戲AI
- 遊戲特效有哪些製作的分類遊戲特效
- Microsoft + Perforce:遊戲製作的全新構想ROS遊戲
- 國產單機遊戲的未來,只能是創意小製作嗎?遊戲
- 底層搭建:踏入動作遊戲的製作階段遊戲
- Vue+WebSocket+ES6+Canvas 製作【你畫我猜】小遊戲VueWebCanvas遊戲
- python手機版做小遊戲程式碼大全-python簡單小遊戲程式碼 怎麼用Python製作簡單小遊戲...Python遊戲
- 如何低成本製作遊戲音效遊戲
- 遊戲音樂的認識與製作三遊戲
- pyqt5製作俄羅斯方塊小遊戲-----原始碼解析QT遊戲原始碼
- 遊戲角色寫實頭髮製作遊戲
- 製作遊戲載入進度條遊戲
- 巨人網路製作人聊遊戲長留: 提高遊戲長留是遊戲製作終極追求遊戲
- 我對SLG遊戲製作的一些思考遊戲
- 揭祕電子遊戲背後音效製作的故事遊戲
- News jam: 按新聞的節奏製作遊戲(上)遊戲
- News jam: 按新聞的節奏製作遊戲(下)遊戲
- phaser框架製作遊戲的例子,加上自己的註釋框架遊戲
- 旅遊業企業如何製作自己的微信小程式?微信小程式
- 《最終幻想7:重製版》遊戲音訊製作分享遊戲音訊
- 製作遊戲廣告需要規避的50個誤區遊戲
- 從理性與感性的思維邏輯談遊戲製作遊戲
- RPG 製作大師:古老的遊戲開發入門工具遊戲開發
- svg製作小圖示SVG
- canvas繪製“飛機大戰”小遊戲,真香!Canvas遊戲
- 探討大世界遊戲的製作流程及技術——大場景製作技術概況篇遊戲
- UI 製作使遊戲更具世界觀,UI動畫和UI製作之間的兩個區別UI遊戲動畫
- three.js 製作邏輯轉體遊戲(上)JS遊戲
- three.js 製作邏輯轉體遊戲(下)JS遊戲