最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

創(chuàng)意編程大賽

2023-04-09 08:38 作者:常青de綿陽(yáng)  | 我要投稿


tkinter圖形界面:

http://c.biancheng.net/tkinter/the-first-tkinter.html

pygame:

http://c.biancheng.net/pygame/display.html

之前項(xiàng)目用到的代碼

main.py

import pygame
from X0_start import Start
from X1_game import *


from A0_settings import Settings


""" 初始化 """
pygame.init()
settings = Settings() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 定義窗口大小
screen = pygame.display.set_mode(settings.sizes) ? ?# 定義窗口大小




# 開始的動(dòng)畫
start = Start(screen)

"""中間的游戲"""
# 創(chuàng)建游戲?qū)ο?br>
game = PlaneGame()

# 啟動(dòng)游戲
game.start_game()


# 結(jié)束動(dòng)畫



GAME.py

import pygame

from pygame import Surface # 有關(guān)輸入框內(nèi)容的導(dǎo)入
from pygame.constants import QUIT
from X1_calculation_judgment import *
from X1_digital_display import *
import pygame.freetype

from X1_game_sprits import *
from X1_track_mod import *
from A0_settings import Settings
from X1_type import *
settings = Settings()


# 對(duì)于輸入框的初始化
pygame.init()
WIDTH = 600
HEIGHT = 500
FPS = 120
font = pygame.freetype.SysFont('Arial', 20)
font.origin = True

global screen, clock, textFont ?# 修改全局變量


class PlaneGame(object):

? ?"""流浪地球主游戲"""
? ?def __init__(self):
? ? ? ?""" 對(duì)游戲進(jìn)行初始化"""
? ? ? ?# 0.遍歷屏幕
? ? ? ?self.screen = pygame.display.set_mode(settings.sizes)
? ? ? ?# 1.創(chuàng)建游戲時(shí)鐘
? ? ? ?self.clock = pygame.time.Clock()
? ? ? ?self.clock.tick(FPS) ?# 限制幀數(shù)
? ? ? ?# 2.調(diào)用私有方法,精靈和精靈組的創(chuàng)建
? ? ? ?self.__create_sprites()
? ? ? ?# 3.設(shè)置定時(shí)器事件——?jiǎng)?chuàng)建障礙物 1S
? ? ? ?pygame.time.set_timer(settings.CREATE_ENEMY_EVENT, 1000)
? ? ? ?pygame.time.set_timer(settings.HERO_FIRE_EVENT, 500)
? ? ? ?# 4.創(chuàng)建輸入框
? ? ? ?self.b = 0 ?#用于接受單個(gè)輸入的數(shù)據(jù)
? ? ? ?self.a = [] #用于存放整個(gè)輸入的數(shù)據(jù)
? ? ? ?self.return_ = 0
? ? ? ?self.inputbox = InputBox(pygame.Rect(1000, 720, 1300, 725))

? ? ? ?# 5,算式的打印
? ? ? ?self.cintinue = True ? # 計(jì)算結(jié)果是否正確
? ? ? ?self.calculation_judgment = Calculation_judgment(self.return_)
? ? ? ?self.result_right = self.calculation_judgment.judge()
? ? ? ?self.count1 = self.calculation_judgment.return_1()
? ? ? ?self.count2 = self.calculation_judgment.return_2()

? ? ? ?# 6.計(jì)算結(jié)果的判斷
? ? ? ?self.return_out = False

? ? ? ?# 7.顯示需要計(jì)算的計(jì)算式
? ? ? ?self.digital_display = Digital_display()
? ? ? ?self.digital_display.draw(self.screen, self.count1, self.count2)

? ?def __create_sprites(self):
? ? ? ?# 創(chuàng)建背景精靈和精靈組
? ? ? ?bg1 = Background()
? ? ? ?bg2 = Background(True)
? ? ? ?# bg2起始位置在bg1的上方
? ? ? ?# bg2.rect.y = -bg2.rect.height

? ? ? ?self.back_group = pygame.sprite.Group(bg1, bg2)

? ? ? ?# 創(chuàng)建敵機(jī)的精靈和精靈組
? ? ? ?self.ememy = Enemy()
? ? ? ?self.enemy_group = pygame.sprite.Group(self.ememy)

? ? ? ?# 創(chuàng)建英雄的精靈和精靈組
? ? ? ?self.hero = Hero()
? ? ? ?self.hero_group = pygame.sprite.Group(self.hero)

? ? ? ?# 創(chuàng)建跟蹤導(dǎo)彈
? ? ? ?self.chimp = Chimp()
? ? ? ?self.chimp_group = pygame.sprite.Group(self.chimp)

? ? ? ?# 輸入框
? ? ? ?
? ? ? ?
? ?# 游戲循環(huán)?。。。。。。。。。。。?br> ? ?def start_game(self):
? ? ? ?print("游戲開始...")


? ? ? ?# 創(chuàng)建底部的輸入框
? ? ? ?inputbox = InputBox(pygame.Rect(100, 20, 140, 120)) ?# 輸入框
? ? ? ?while True:

? ? ? ? ? ?# 1.設(shè)置刷新幀率
? ? ? ? ? ?self.clock.tick(settings.FRAME_PER_SEC)
? ? ? ? ? ?# 2.事件監(jiān)聽
? ? ? ? ? ?self.__even_handler()
? ? ? ? ? ?# 3.碰撞檢測(cè)
? ? ? ? ? ?self.__check_collide()


? ? ? ? ? ?



? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?# 4.更新/繪制精靈組
? ? ? ? ? ?self.__update_sprites()
? ? ? ? ? ?# 5.進(jìn)行子彈追蹤
? ? ? ? ? ?self.__track()
? ? ? ? ? ?# 6.更新屏幕顯示
? ? ? ? ? ?pygame.display.update()

? ? ? ? ? ?
? ? ? ? ? ?pass

? ?# 定義事件監(jiān)聽函數(shù)
? ?def __even_handler(self):
? ? ? ?for event in pygame.event.get():


? ? ? ? ? ?# 判斷是否退出游戲
? ? ? ? ? ?self.i = 1
? ? ? ? ? ?if event.type == pygame.QUIT:
? ? ? ? ? ? ? ?PlaneGame.__game_over()
? ? ? ? ? ?elif (event.type == CREATE_ENEMY_EVENT) and self.i%3000000 == 1:
? ? ? ? ? ? ? ?# print("敵機(jī)出場(chǎng)...")
? ? ? ? ? ? ? ?# 創(chuàng)建敵機(jī)精靈
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?enemy = Enemy()
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?# 將敵機(jī)精靈添加到敵機(jī)精靈組
? ? ? ? ? ? ? ?self.enemy_group.add(enemy)
? ? ? ? ? ? ? ?
? ? ? ? ? ?self.i += 1
? ? ? ? ? ? ? ?
? ? ? ? ? ?#elif event.type == HERO_FIRE_EVENT:
? ? ? ? ? ?# ? self.hero.fire()

? ? ? ? ? ?if self.return_out:
? ? ? ? ? ? ? ?# 創(chuàng)建跟蹤導(dǎo)彈精靈
? ? ? ? ? ? ? ?self.return_out = False
? ? ? ? ? ? ? ?chimp = Chimp()
? ? ? ? ? ? ? ?self.chimp_group.add(chimp)
? ? ? ? ? ? ? ?pos1 = vect(chimp.rect.centerx, chimp.rect.centery)#取出子彈的坐標(biāo)
? ? ? ? ? ? ? ?pos2 = vect(self.ememy.rect.x, self.ememy.rect.y)#障礙物的坐標(biāo)
? ? ? ? ? ? ? ?chimp.punched(pos1, pos2)
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ?# 直接判斷鍵盤按鍵不能持續(xù)的獲取按鍵事件
? ? ? ? ? ?# elif event.type == pygame.KEYDOWN and event.type == pygame.K_RIGHT:
? ? ? ? ? ?# ? ? print("向右移動(dòng)...")

? ? ? ?"""
? ? ? ?# 使用鍵盤模塊提供的方法獲取鍵盤按鍵——鍵盤模塊可以持續(xù)的獲取鍵盤按鍵
? ? ? ?keys_pressed = pygame.key.get_pressed()
? ? ? ?# 判斷元祖中對(duì)應(yīng)的按鍵索引值
? ? ? ?if keys_pressed[pygame.K_RIGHT] or keys_pressed[pygame.K_d]:
? ? ? ? ? ?self.hero.rect.x += 2
? ? ? ?elif keys_pressed[pygame.K_LEFT] or keys_pressed[pygame.K_a]:
? ? ? ? ? ?self.hero.rect.x -= 2
? ? ? ?elif keys_pressed[pygame.K_UP] or keys_pressed[pygame.K_w]:
? ? ? ? ? ?self.hero.rect.y -= 2
? ? ? ?elif keys_pressed[pygame.K_DOWN] or keys_pressed[pygame.K_s]:
? ? ? ? ? ?self.hero.rect.y += 2
? ? ? ?else:
? ? ? ? ? ?self.hero.speed = 0
? ? ? ?"""


? ?# 定義子彈自動(dòng)追蹤
? ?def __track(self):

? ? ? ?pass
? ?
? ?# 定義碰撞檢測(cè)
? ?def __check_collide(self):

? ? ? ?# 子彈摧毀敵機(jī)—— 使用groupcollide進(jìn)行碰撞檢測(cè)
? ? ? ?pygame.sprite.groupcollide(self.chimp_group, self.enemy_group, True, True)

? ? ? ?# 敵機(jī)撞毀我方飛船——使用spritecollide進(jìn)行碰撞檢測(cè)
? ? ? ?enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)

? ? ? ?# 判斷列表是否有內(nèi)容
? ? ? ?if len(enemies) > 0:

? ? ? ? ? ?# 讓英雄犧牲
? ? ? ? ? ?self.hero.kill()
? ? ? ? ? ?

? ? ? ? ? ?# 結(jié)束游戲
? ? ? ? ? ?PlaneGame.__game_over()

? ?""" 對(duì)于屏幕上得所有元素進(jìn)行刷新 """
? ?def __update_sprites(self):
? ? ? ?sprite_groups = [self.back_group, self.enemy_group,
? ? ? ? ? ? ? ? ? ? ? ? self.hero_group, self.chimp_group]

? ? ? ?for sprite_group in sprite_groups:
? ? ? ? ? ?sprite_group.update()
? ? ? ? ? ?sprite_group.draw(self.screen)

? ? ? ?# 5,算式的打印
? ? ? ?if self.cintinue:
? ? ? ? ? ?self.cintinue = False
? ? ? ? ? ?self.calculation_judgment = Calculation_judgment(self.return_)
? ? ? ? ? ?self.result_right = self.calculation_judgment.judge()
? ? ? ? ? ?self.count1 = self.calculation_judgment.return_1()
? ? ? ? ? ?self.count2 = self.calculation_judgment.return_2()


? ? ? ?# 顯示內(nèi)容的打印
? ? ? ?self.digital_display = Digital_display()
? ? ? ?self.digital_display.draw(self.screen, self.count1, self.count2)
? ? ? ?
? ? ? ?
? ? ? ?# 輸入框
? ? ? ?for event in pygame.event.get():
? ? ? ? ? ?self.b = self.inputbox.dealEvent(event) ?# 輸入框處理事件
? ? ? ? ? ?if self.b != None:
? ? ? ? ? ? ? ?self.a.append(self.b)

? ? ? ?for k in self.a:
? ? ? ? ? ?try:
? ? ? ? ? ? ? ?if self.result_right == int(k):
? ? ? ? ? ? ? ? ? ?self.return_out = True
? ? ? ? ? ? ? ? ? ?self.cintinue ?= True
? ? ? ? ? ?except ZeroDivisionError:
? ? ? ? ? ? ? ?print("計(jì)算的結(jié)果為自然數(shù)")

? ? ? ? ? ? ? ? ? ?
? ? ? ?self.inputbox.draw(self.screen) ?# 輸入框顯示
? ? ? ?pygame.display.flip()
? ?# 游戲結(jié)束
? ?@staticmethod
? ?def __game_over():
? ? ? ?print("游戲結(jié)束...")

? ? ? ?pygame.quit()
? ? ? ?exit()


import pygame
import random
from A0_settings import Settings
from X1_track_mod import *
settings = Settings()
# 定義屏幕大小的常量
SCREEN_RECT = pygame.Rect(0, 0, settings.sceen_width, settings.sceen_height)
# 創(chuàng)建敵機(jī)的定時(shí)器常量
CREATE_ENEMY_EVENT = pygame.USEREVENT
# 英雄發(fā)射子彈事件
HERO_FIRE_EVENT = pygame.USEREVENT + 1

class GameSprite(pygame.sprite.Sprite):
? ?"""保衛(wèi)地球游戲精靈"""

? ?def __init__(self, image_name, speed=settings.speed1):

? ? ? ?# 調(diào)用父類的初始化方法
? ? ? ?super().__init__()

? ? ? ?# 定義對(duì)象的屬性
? ? ? ?self.image = pygame.image.load(image_name)
? ? ? ?self.rect = self.image.get_rect()
? ? ? ?self.speed = speed

? ?def update(self):

? ? ? ?# 在屏幕的垂直方向上移動(dòng)
? ? ? ?self.rect.y += self.speed
? ? ? ?


class Background(GameSprite):
? ?"""游戲背景精靈"""
? ?def __init__(self, is_alt=False):

? ? ? ?# 1.調(diào)用父類方法實(shí)現(xiàn)精靈的創(chuàng)建
? ? ? ?super().__init__("./X1_images_gaming/00_background.png")

? ? ? ?if is_alt:
? ? ? ? ? ?self.rect.y = -self.rect.height

? ?def update(self):

? ? ? ?# 1.調(diào)用父類的方法實(shí)現(xiàn)
? ? ? ?super().update()

? ? ? ?# 2.判斷是否移出屏幕,如果移出,將圖像移至屏幕上方
? ? ? ?if self.rect.y >= SCREEN_RECT.height:
? ? ? ? ? ?self.rect.y = -self.rect.height
class Enemy(GameSprite):
? ?"""障礙物精靈"""

? ?def __init__(self):

? ? ? ?# 1.調(diào)用父類方法,創(chuàng)建障礙物精靈,同時(shí)指定障礙物圖片
? ? ? ?super().__init__("./X1_images_gaming/enemy1.png")
? ? ? ?# 2.指定敵機(jī)的初始隨機(jī)速度——1到3
? ? ? ?self.speed = random.randint(1, 3)

? ? ? ?# 3.指定敵機(jī)的初始隨機(jī)位置
? ? ? ?self.rect.bottom = 0 ? # 設(shè)置敵機(jī)是從屏幕外飛進(jìn)屏幕
? ? ? ?# 敵機(jī)要完整的在屏幕內(nèi) — 敵機(jī)的最大X值是屏幕的寬減去敵機(jī)的寬
? ? ? ?max_x = SCREEN_RECT.width-self.rect.width
? ? ? ?self.rect.x = random.randint(0, max_x)

? ?def update(self):

? ? ? ?# 1.調(diào)用父類方法保持垂直方向的飛行
? ? ? ?super().update()
? ? ? ?# 2.判斷是否飛出屏幕,如果是 需要從精靈組中刪除敵機(jī)
? ? ? ?if self.rect.y >= SCREEN_RECT.height: ? ?# 敵機(jī)的y值大于屏幕的高即飛出屏幕
? ? ? ? ? ?# print("飛出屏幕,需從精靈組中刪除...")
? ? ? ? ? ?# kill方法可以將精靈從所有精靈組中移出,精靈就好被自動(dòng)銷毀
? ? ? ? ? ?self.kill()

? ?# 判斷敵機(jī)是否被銷毀
? ?def __del__(self):
? ? ? ?# print("敵機(jī)掛了 %s" % self.rect)
? ? ? ?pass


class Hero(GameSprite):
? ?"""我方飛船精靈"""

? ?def __init__(self):

? ? ? ?# 1.調(diào)用父類方法設(shè)置image和速度
? ? ? ?super().__init__("./X1_images_gaming/me1.png", 0)
? ? ? ?# 2.設(shè)置英雄的初始位置
? ? ? ?self.rect.centerx = SCREEN_RECT.left + 440
? ? ? ?self.rect.bottom = SCREEN_RECT.bottom + 30

? ? ? ?# 3.創(chuàng)建子彈的精靈組
? ? ? ?self.bullets = pygame.sprite.Group()

? ?def update(self):

? ? ? ?# # 英雄在水平方向移動(dòng)
? ? ? ?# self.rect.x += self.speed

? ? ? ?# 控制英雄不能離開屏幕
? ? ? ?if self.rect.x < 0:
? ? ? ? ? ?self.rect.x = 0
? ? ? ?elif self.rect.right > SCREEN_RECT.width:
? ? ? ? ? ?self.rect.right = SCREEN_RECT.width
? ? ? ?elif self.rect.y < 0:
? ? ? ? ? ?self.rect.y = 0
? ? ? ?elif self.rect.bottom > SCREEN_RECT.bottom:
? ? ? ? ? ?self.rect.bottom = SCREEN_RECT.bottom
"""
class Track_fire(object):
? ?def __init__(self):
? ? ? ?# 1.創(chuàng)建跟蹤子彈精靈
? ? ? ?self.chimp = Chimp()
? ? ? ? ? ?
? ? ? ?
? ? ? ?# 2.設(shè)置子彈的位置
? ? ? ?self.chimp.rect.bottom = self.rect.y - i*20
? ? ? ?self.chimp.rect.centerx = self.rect.centerx

? ? ? ?# 3.將精靈添加到精靈組
? ? ? ?# self.bullets.add(self.chimp)
? ? ? ?


? ?

class Bullet(GameSprite):
? ?#子彈精靈

? ?def __init__(self):

? ? ? ?# 調(diào)用父類方法設(shè)置子彈圖片和初始速度
? ? ? ?super().__init__("./X1_images_gaming/bullet2.png", -2)

? ?def update(self):

? ? ? ?# 調(diào)用方法讓子彈沿垂直方向飛行
? ? ? ?# super().update()

? ? ? ?# 判斷子彈是否飛出屏幕
? ? ? ?if self.rect.bottom < 0:
? ? ? ? ? ?self.kill()

? ? ? ?

? ?# def __del__(self):
? ?# ? ? print("子彈被銷毀")
"""




? ?



創(chuàng)意編程大賽的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
乐都县| 凌海市| 迁西县| 策勒县| 宣化县| 宜丰县| 伽师县| 彰化市| 喀喇| 泽州县| 青冈县| 资阳市| 新巴尔虎右旗| 奉节县| 探索| 普兰县| 定兴县| 凤山市| 安顺市| 子长县| 临城县| 镇远县| 永靖县| 新丰县| 临海市| 宿松县| 汶上县| 潞城市| 平塘县| 思南县| 海原县| 远安县| 临猗县| 云安县| 亳州市| 分宜县| 翁牛特旗| 文化| 金乡县| 松江区| 汤原县|