Python+Pygame實現趣味足球遊戲
導語
足球運動有著“世界第一運動”的美稱,還是全球最具影響力的體育運動項目之一。
小小的足球在滾動中能釋放滿滿的能量和快樂。
足球遊戲不僅可以鍛煉大傢的協調和反應能力,還能提高身體素質哦~
喜歡足球的小可愛,這一期可以大飽眼福啦
小編準備出一期關於足球的編程代碼給大傢哦~還有那些喜歡看足球賽的可以自己上jio啦
溫馨提示:
足球遊戲時,一定要註意。場地要安全,服裝要選好。
剛剛吃飽飯,劇烈要不得。動前和動後,準備和放松。
我們愛足球,運動伴成長。你愛踢足球遊戲嘛?!
一、環境安裝
1)各種素材(圖片、視頻等)
資料挺多滴,等下代碼就隻展示主要的一些代碼哈!
2)運行環境 小編使用的環境:Python3、Pycharm社區版、Pygame 模塊部分自帶就不一一展示啦
模塊安裝:pip install -i https://pypi.douban.com/simple/+模塊名
二、代碼展示
如上圖素材所示代碼主要分為6段py代碼!代碼很多僅展示主程序
主程序
from __future__ import unicode_literals import itertools, sys, time, random, math, pygame from pygame.locals import * from MyLibrary import * from football import * from IO import* def bias(x, y): x = x + 16 y = y + 24 x_cent = 0 y_cent = 0 if (x >= 100 and x <= 700): x_cent = -1 * x + 100 elif (x > 700): x_cent = -600 else: x_cent = 0 if (y >= 75 and y <= 525): y_cent = -1 * y + 75 elif (y > 525): y_cent = -450 else: y_cent = 0 return x_cent, y_cent def draw_background(screen): rc = (255, 255, 255) rp = (600, 400) rr = 80 width = 5 screen.fill((0,100,0)) pygame.draw.circle(screen, rc, rp, rr, width) pygame.draw.rect(screen, (255, 255, 255), (10, 10, 600, 790), 5) pygame.draw.rect(screen, (255, 255, 255), (600, 10, 590, 790), 5) pygame.draw.rect(screen, (255, 255, 255), (10, 150, 300, 500), 5) pygame.draw.rect(screen, (255, 255, 255), (890, 150, 300, 500), 5) def draw_ball_goal(screen): goal1 = pygame.image.load("goal1.bmp").convert() goal2 = pygame.image.load("goal2.bmp").convert() screen.blit(goal1,(8,305)) screen.blit(goal2,(1121,305)) def begin_a_game(n1,n2): nn = 0 filename = 'p2.png' filename2 = 'p1.png' size_of_player = (32,47.5) size_of_action = 4 size_of_playground = (1920,1080) dict_ = {(-1, 0): 3, (1, 0): 0, (0, 1): 2, (0, -1): 1, (-1, 1): 3, (-1, -1): 1, (1, -1): 0, (1, 1): 2}; x_bias = 0 y_bias = 0 kick_off = 0 player_group = pygame.sprite.Group() player_group1 = pygame.sprite.Group() player_group2 = pygame.sprite.Group() player = MySprite() X, Y = random.randint(250,500),random.randint(350-25,450-25) # x_bias, y_bias = bias(X, Y); player.load(filename, size_of_player[0], size_of_player[1], size_of_action) player.position = X + x_bias, Y + y_bias player.direction = 1,0 player.tag =1 player_group.add(player) player_group1.add(player) player2 = MySprite() X2,Y2 = random.randint(700,950),random.randint(350-25,450-25) player2.load(filename2, size_of_player[0], size_of_player[1], size_of_action) player2.position = X2 + x_bias, Y2 + y_bias player2.direction = 1,0 player2.tag = 2 player_group.add(player2) player_group2.add(player2) b_X,b_Y = 1200/2,800/2; ball_group = pygame.sprite.Group() myball = ball() myball.load() myball.position = b_X+x_bias,b_Y+y_bias ball_group.add(myball) p1 = robot() p1.leader = player p1.ball = myball p1.goal_pos = [892,399] p1.tag = 1 p1.goal = [1120,405] p1.other_group = player_group2 p1.load("p3.png", size_of_player[0], size_of_player[1], size_of_action) p1.X,p1.Y = random.randint(250,500),random.randint(50-25,350-25) p1.direction = 1,0 player_group1.add(p1) player_group.add(p1) pp2 = robot_B() pp2.leader = p1 pp2.ball = myball pp2.goal_pos = [892,399] pp2.goal = [1120,405] pp2.tag = 1 pp2.wonder = 300; pp2.other_group = player_group2 pp2.load("p3.png", size_of_player[0], size_of_player[1], size_of_action) pp2.X,pp2.Y = random.randint(250,500),random.randint(450-25,750-25) pp2.direction = 1,0 player_group1.add(pp2) player_group.add(pp2) d1 = defence() d1.leader = player d1.ball = myball d1.wonder = 85 d1.tag = 1 d1.other_group = player_group2 d1.load("p3.png", size_of_player[0], size_of_player[1], size_of_action) d1.X,d1.Y = 85,390 d1.direction = 1,0 player_group1.add(d1) player_group.add(d1) t = robot() t.leader = player2 t.ball = myball t.tag = 2 t.other_group = player_group1 t.goal_pos = [309,389] t.goal = [70,405] t.load("p4.png", size_of_player[0], size_of_player[1], size_of_action) t.X,t.Y = random.randint(700,950),random.randint(50-25,350-25) t.direction = 1,0 player_group2.add(t) player_group.add(t) r = t; t = robot_B() t.leader = r t.goal = [70,405] t.ball = myball t.wonder = 900 t.tag = 2 t.other_group = player_group1 t.goal_pos = [309,389] t.load("p4.png", size_of_player[0], size_of_player[1], size_of_action) t.X,t.Y = random.randint(700,950),random.randint(450-25,750-25) t.direction = 1,0 player_group2.add(t) player_group.add(t) d2 = defence2() d2.leader = player2 d2.ball = myball d2.wonder = 1070 d2.tag = 2 d2.other_group = player_group1 d2.load("p4.png", size_of_player[0], size_of_player[1], size_of_action) d2.X,d2.Y = 1070,390 d2.direction = 1,0 player_group2.add(d2) player_group.add(d2) game_over = False player_moving = False player2_moving =False while True: timer.tick(50) ticks = pygame.time.get_ticks() myball.cal +=1; for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if nn == 0.00001: keys = pygame.key.get_pressed() if keys[K_ESCAPE]: sys.exit() if keys[K_SPACE]:nn+=0.00001 continue nn+=0.00001 mx, my = pygame.mouse.get_pos() # print(str(mx)+" "+str(my)) # print(myball.position) Reference = [x_bias,y_bias,X,Y] player1_AI(myball,player,game_over,player_moving,Reference) x_bias,y_bias,X,Y = Reference Reference = [x_bias,y_bias,X2,Y2] player2_AI(myball,player2,game_over,player2_moving,Reference) x_bias,y_bias,X2,Y2 = Reference # print(d1.shoot) if d1.shoot == True or d2.shoot == True: p1.state = "back" pp2.state = "back" r.state = "back" t.state = "back" player_group.update(ticks, 30) if myball.cal > 10: the_player = None if myball.player == None: the_player = pygame.sprite.spritecollideany(myball,player_group); if the_player != None: if pygame.sprite.collide_circle_ratio(1)(the_player,myball): myball.fetched(the_player); the_player.state = "catch" if the_player == d1 or the_player == d2: the_player.shoot =True; elif myball.player.tag ==1: the_player = pygame.sprite.spritecollideany(myball,player_group2); if the_player != None: if pygame.sprite.collide_circle_ratio(1)(the_player,myball): if the_player != d1 and the_player != d2: myball.player.state = "chase" the_player.state = "catch" myball.fetched(the_player) elif myball.player.tag ==2: the_player = pygame.sprite.spritecollideany(myball,player_group1); if the_player != None: if pygame.sprite.collide_circle_ratio(1)(the_player,myball): if the_player != d1 and the_player != d2: myball.player.state = "chase" the_player.state = "catch" myball.fetched(the_player) # the_player = pygame.sprite.spritecollideany(myball,player_group); # if the_player != None: # if pygame.sprite.collide_circle_ratio(0.65)(the_player,myball): # print("*********************************************************") # if(myball.player!=None): # player_group.add(myball.player); # ball_group.remove(myball.player); # myball.fetched(the_player); # player_group.remove(the_player) # ball_group.add(the_player) myball.check_bound(1200,800) if(myball.fetch): myball.fetched(None) #print("kick_off") else: myball.run() # print(str(myball.X)+" "+str(myball.Y)) ball_group.update(ticks,60) #print(str(myball.X)+" "+str(myball.Y)) if myball.X < 60 and myball.Y >315 - 17 and myball.Y <495: return 2 elif myball.X > 1110 and myball.Y >315 - 17 and myball.Y <495: return 1 draw_background(screen) if(myball.player!=None and myball.player.direction[0]>0): player_group.draw(screen) ball_group.draw(screen) else: ball_group.draw(screen) player_group.draw(screen) font = pygame.font.SysFont("", 150) text_surface = font.render(str(n1)+" : "+str(n2), True, (0, 0, 255)) screen.blit(text_surface, (500, 10)) draw_ball_goal(screen) pygame.display.update() def myinit(): screen = pygame.display.set_mode((769,563)) g1 = pygame.image.load("g1.jpg").convert() g2 = pygame.image.load("hh.png").convert() t = 0 timer = pygame.time.Clock() while(1): timer.tick(30) ticks = pygame.time.get_ticks(); for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() screen.blit(g1,(0,0)) t+= 1 #print(t) if t > 66: break; pygame.display.update() while(1): timer.tick(30) ticks = pygame.time.get_ticks(); for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == MOUSEBUTTONUP: mouse_up = event.button mouse_up_x,mouse_up_y = event.pos if mouse_up_x > 245 and mouse_up_x < 469 and mouse_up_y> 368 and mouse_up_y < 470: return screen.blit(g2,(0,0)) pygame.display.update() if __name__ == '__main__': pygame.init() screen = pygame.display.set_mode((1200, 800)) pygame.display.set_caption("簡單足球") font = pygame.font.Font(None, 36) myinit() timer = pygame.time.Clock() n1 = 0 n2 =0 screen = pygame.display.set_mode((1200, 800)) for x in range(10000): t = begin_a_game(n1,n2); if t == 1: n1 +=1 else: n2 += 1
三、效果展示
1)加載界面
2)開始遊戲界面
3)開始遊戲
4)遊戲運行
到此這篇關於Python+Pygame實現趣味足球遊戲的文章就介紹到這瞭,更多相關Python Pygame足球遊戲內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python Pygame中精靈和碰撞檢測詳解
- 利用Pygame制作躲避僵屍遊戲
- pygame實現滑塊接小球遊戲
- Pygame遊戲開發之太空射擊實戰敵人精靈篇
- Python 寫小遊戲吃金幣+打乒乓+滑雪(附源碼)