100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Python足球游戏源代码 热血足球小游戏 可双人玩

Python足球游戏源代码 热血足球小游戏 可双人玩

时间:2021-12-18 19:53:38

相关推荐

Python足球游戏源代码 热血足球小游戏 可双人玩

基于Python pygame的足球游戏源代码,游戏可以双人玩,游戏入口程序为soccer.py。

控制人物一 方向键:wasd ,射门键:r

控制人物二,方向键: 键盘方向键,射门键:k

程序运行截图

核心程序代码: soccer.py

# -*- coding: utf-8 -*-#更多Python源代码,请关注微信公众号:Python代码大全from __future__ import unicode_literalsimport itertools, sys, time, random, math, pygamefrom pygame.locals import *from MyLibrary import *from football import *from IO import*def bias(x, y):x = x + 16y = y + 24x_cent = 0y_cent = 0if (x >= 100 and x <= 700):x_cent = -1 * x + 100elif (x > 700):x_cent = -600else:x_cent = 0if (y >= 75 and y <= 525):y_cent = -1 * y + 75elif (y > 525):y_cent = -450else:y_cent = 0return x_cent, y_centdef draw_background(screen):rc = (255, 255, 255)rp = (600, 400)rr = 80width = 5screen.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 = 0filename = 'p2.png'filename2 = 'p1.png'size_of_player = (32,47.5)size_of_action = 4size_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 = 0y_bias = 0kick_off = 0player_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_biasplayer.direction = 1,0player.tag =1player_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_biasplayer2.direction = 1,0player2.tag = 2player_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_biasball_group.add(myball)p1 = robot()p1.leader = playerp1.ball = myballp1.goal_pos = [892,399]p1.tag = 1p1.goal = [1120,405]p1.other_group = player_group2p1.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,0player_group1.add(p1)player_group.add(p1)pp2 = robot_B()pp2.leader = p1pp2.ball = myballpp2.goal_pos = [892,399]pp2.goal = [1120,405]pp2.tag = 1pp2.wonder = 300;pp2.other_group = player_group2pp2.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,0player_group1.add(pp2)player_group.add(pp2)d1 = defence()d1.leader = playerd1.ball = myballd1.wonder = 85d1.tag = 1d1.other_group = player_group2d1.load("p3.png", size_of_player[0], size_of_player[1], size_of_action)d1.X,d1.Y = 85,390d1.direction = 1,0player_group1.add(d1)player_group.add(d1)t = robot()t.leader = player2t.ball = myballt.tag = 2t.other_group = player_group1t.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,0player_group2.add(t)player_group.add(t)r = t;t = robot_B()t.leader = rt.goal = [70,405]t.ball = myballt.wonder = 900t.tag = 2t.other_group = player_group1t.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,0player_group2.add(t)player_group.add(t)d2 = defence2()d2.leader = player2d2.ball = myballd2.wonder = 1070d2.tag = 2d2.other_group = player_group1d2.load("p4.png", size_of_player[0], size_of_player[1], size_of_action)d2.X,d2.Y = 1070,390d2.direction = 1,0player_group2.add(d2)player_group.add(d2) game_over = Falseplayer_moving = Falseplayer2_moving =Falsewhile 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.00001continuenn+=0.00001mx, 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 = ReferenceReference = [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 = Noneif 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 2elif myball.X > 1110 and myball.Y >315 - 17 and myball.Y <495:return 1draw_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 = 0timer = 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+= 1print(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.buttonmouse_up_x,mouse_up_y = event.posif mouse_up_x > 245 and mouse_up_x < 469 and mouse_up_y> 368 and mouse_up_y < 470:returnscreen.blit(g2,(0,0))pygame.display.update()if __name__ == '__main__':pygame.init()screen = pygame.display.set_mode((1200, 800))pygame.display.set_caption("热血足球联盟-Python代码大全")font = pygame.font.Font(None, 36)myinit()timer = pygame.time.Clock()n1 = 0n2 =0screen = pygame.display.set_mode((1200, 800))for x in range(10000):t = begin_a_game(n1,n2);if t == 1:n1 +=1else:n2 += 1

AI.py

# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom pygame.locals import *from MyLibrary import *filename = 'p2.png'filename2 = 'p1.png'size_of_player = (32,47.5)size_of_action = 4size_of_playground = (1200,850)dict_ = {(0,0):0,(-1, 0): 3, (1, 0): 0, (0, 1): 2, (0, -1): 1, (-1, 1): 2, (-1, -1): 1, (1, -1): 1, (1, 1): 2};def player2_AI(myball,player,game_over,player_moving,Reference):x_bias,y_bias,X,Y = ReferenceTEMP = [0,0]player.direction = list(player.direction)keys = pygame.key.get_pressed()if keys[K_ESCAPE]: sys.exit()if keys[K_UP]: TEMP[0] = -1if keys[K_RIGHT]: TEMP[1] = 1if keys[K_DOWN]: TEMP[0] = 1if keys[K_LEFT]: TEMP[1] = -1if keys[K_k] and myball.player == player: myball.kick_off()if ([0,0] == TEMP):player_moving = Falseelse:player_moving = Trueif player_moving:player.direction = TEMP which_column = dict_[tuple(player.direction)]# print(player.direction)# print(which_column)if not game_over:# 根据角色的不同方向,使用不同的动画帧player.first_frame = which_column * player.columnsplayer.last_frame = player.first_frame + player.columns - 1if player.frame < player.first_frame:player.frame = player.first_frame# print(player.direction)if player.X >=0 and player.X <= 70 and player.Y >=255 and player.Y <=260:if player.direction[0] == 1:player.direction[0] = 0if player.X >=70 and player.X <=75 and player.Y >=260 and player.Y <=497:if player.direction[1] == -1:player.direction[1] =0if player.X >=0 and player.X <= 70 and player.Y >=497 and player.Y <=502:if player.direction[0] == -1:player.direction[0] = 0if player.X >=1080 and player.X <= 1200 and player.Y >=255 and player.Y <260:if player.direction[0] == 1:player.direction[0] = 0if player.X > 1075 and player.X <= 1080 and player.Y >=260 and player.Y < 503:if player.direction[1] == 1:player.direction[1] =0if player.X >=1080 and player.X <= 1200 and player.Y >=503 and player.Y <=507:if player.direction[0] == -1:player.direction[0] = 0if not player_moving:# 当停止按键(即人物停止移动的时候),停止更新动画帧player.frame = player.last_frame= player.first_frame player.moving = False;else:player.moving = True;player.velocity.x = player.direction[1] * 2player.velocity.y = player.direction[0]* 2player.velocity.x *= 1player.velocity.y *= 1# x_bias, y_bias = bias(X, Y);# print(player.velocity.y)if player_moving:X += player.velocity.xY += player.velocity.yif X < 0: X = 0if X > size_of_playground[0] - 48: X = size_of_playground[0] - 48if Y < 0: Y = 0if Y > size_of_playground[1] - 88: Y = size_of_playground[1] - 88player.X = X + x_biasplayer.Y = Y + y_bias# Reference = x_bias,y_bias,X,YReference[0] = x_biasReference[1]= y_biasReference[2] = XReference[3] = Ydef player1_AI(myball,player,game_over,player_moving,Reference):x_bias,y_bias,X,Y = ReferenceTEMP = [0,0]player.direction = list(player.direction)keys = pygame.key.get_pressed()if keys[K_ESCAPE]: sys.exit()if keys[K_w]: TEMP[0] = -1if keys[K_d]: TEMP[1] = 1if keys[K_s]: TEMP[0] = 1if keys[K_a]: TEMP[1] = -1if keys[K_t] and myball.player == player: myball.kick_off()if ([0,0] == TEMP):player_moving = Falseelse:player_moving = Trueif player_moving:player.direction = TEMP which_column = dict_[tuple(player.direction)]# print(player.direction)# print(which_column)if not game_over:# 根据角色的不同方向,使用不同的动画帧player.first_frame = which_column * player.columnsplayer.last_frame = player.first_frame + player.columns - 1if player.frame < player.first_frame:player.frame = player.first_frame# print(player.direction)if player.X >=0 and player.X <= 70 and player.Y >=255 and player.Y <=260:if player.direction[0] == 1:player.direction[0] = 0if player.X >=70 and player.X <=75 and player.Y >=260 and player.Y <=497:if player.direction[1] == -1:player.direction[1] =0if player.X >=0 and player.X <= 70 and player.Y >=497 and player.Y <=502:if player.direction[0] == -1:player.direction[0] = 0if player.X >=1080 and player.X <= 1200 and player.Y >=255 and player.Y <260:if player.direction[0] == 1:player.direction[0] = 0if player.X > 1075 and player.X <= 1080 and player.Y >=260 and player.Y <503:if player.direction[1] == 1:player.direction[1] =0if player.X >=1080 and player.X <= 1200 and player.Y >=503 and player.Y <507:if player.direction[0] == -1:player.direction[0] = 0if not player_moving:# 当停止按键(即人物停止移动的时候),停止更新动画帧player.frame = player.first_frame = player.last_frameplayer.moving = False;else:player.moving = True;player.velocity.x = player.direction[1] * 2player.velocity.y = player.direction[0]* 2player.velocity.x *= 1player.velocity.y *= 1# x_bias, y_bias = bias(X, Y);# print(player.velocity.y)if player_moving:X += player.velocity.xY += player.velocity.yif X < 0: X = 0if X > size_of_playground[0] - 48: X = size_of_playground[0] - 48if Y < 0: Y = 0if Y > size_of_playground[1] - 88: Y = size_of_playground[1] - 88player.X = X + x_biasplayer.Y = Y + y_bias# Reference = x_bias,y_bias,X,YReference[0] = x_biasReference[1]= y_biasReference[2] = XReference[3] = Y

完整程序代码下载地址:Python足球游戏源代码

更多Python程序源代码请关注

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。