Python 巨蟒战舰
在这里,我的程序有一些困难。。。我什么都试过了,但都没用 这是我的密码:Python 巨蟒战舰,python,Python,在这里,我的程序有一些困难。。。我什么都试过了,但都没用 这是我的密码: import random XBateau_un_joueur = 0 YBateau_un_joueur = 0 XBateau_deux_joueur = 1 YBateau_deux_joueur = 1 XBateau_un_IA = 0 YBateau_un_IA = 0 XBateau_deux_IA = 1 YBateau_deux_IA = 1 def Grille(): #définition du
import random
XBateau_un_joueur = 0
YBateau_un_joueur = 0
XBateau_deux_joueur = 1
YBateau_deux_joueur = 1
XBateau_un_IA = 0
YBateau_un_IA = 0
XBateau_deux_IA = 1
YBateau_deux_IA = 1
def Grille(): #définition du tableau qui servira de grille
tableau_joueur = [(0,)*taille]*taille
for i in range(taille):
tableau_joueur[i] = list(tableau_joueur[i])
tableau_joueur[XBateau_deux_joueur][YBateau_deux_joueur] = 1
tableau_joueur[XBateau_un_joueur][YBateau_un_joueur] = 1
if XBateau_un_joueur == XBateau_deux_joueur and YBateau_un_joueur == YBateau_deux_joueur :
XBateau_deux_joueur = XBateau_deux_joueur + 1
YBateau_deux_joueur = YBateau_deux_joueur + 1
if XBateau_deux_joueur > taille - 1 :
XBateau_deux_joueur = XBateau_deux_joueur - 2
if YBateau_deux_joueur > taille - 1 :
YBateau_deux_joueur = YBateau_deux_joueur - 2
tableau_IA = [(0,)*taille]*taille
for j in range(taille):
tableau_IA[j] = list(tableau_IA[j])
tableau_IA[XBateau_un_IA][YBateau_deux_IA] = 1
tableau_IA[XBateau_deux_IA][YBateau_deux_IA] = 1
if XBateau_un_IA and YBateau_un_IA == XBateau_deux_IA and YBateau_deux_IA :
XBateau_deux_IA = XBateau_deux_IA + 1
YBateau_deux_IA = YBateau_deux_IA + 1
if XBateau_deux_IA > taille - 1 :
XBateau_deux_IA = XBateau_deux_IA - 2
if YBateau_deux_joueur > taille - 1 :
YBateau_deux_IA = YBateau_deux_IA - 2
print tableau_joueur
print tableau_IA
def tour_IA():
compteur_de_point_IA = 0
for tour_IA in range (0, 3):
print "L'ennemi nous attaque Capitain !"
x = int(random.randint(0, taille - 1))
y = int(random.randint(0, taille - 1))
if ((x == XBateau_un_joueur) and (y == YBateau_un_joueur)) or ((x == XBateau_deux_joueur) and (y == YBateau_deux_joueur)) :
compteur_de_point_IA = compteur_de_point_IA + 8
print "Arg ! Cette raclure de fond de calle nous a coulé en vaisseau... prenez garde !"
else:
if (x == XBateau_un_joueur) or (y == YBateau_un_joueur) or (x == XBateau_deux_joueur) or (y == YBateau_deux_joueur) :
compteur_de_point_IA = compteur_de_point_IA + 1
print "nous sommes en vue de l'ennemi Cap'tain ! Faite attention !"
else:
print "A l'eau ! Il nous a raté !"
print "Voici les points marqué par l'ennemis :", compteur_de_point_IA
# tour du joueur IRL
def tour_joueur():
list_resultat = []
List_tot = []
print " C'est à vous d'attaquer"
for tour_joueur in range (0, 3):
compteur_de_point_joueur = 0
print "En attente des ordres, lattitude du tir mon capitain ?"
print "(colone)"
x = int(input())
print "longitude du tir ?"
print "(ligne)"
y = int(input())
if ((x == XBateau_un_IA) and (y == YBateau_un_IA)) or ((x == XBateau_deux_IA) and (y == YBateau_deux_IA)) :
compteur_de_point_joueur = compteur_de_point_joueur + 8
print "Aarrrr ! Navire ennemi envoyé par le fond Cap'tain!"
print "Vous marqué 8 points supplémentaires !! Bien joué!"
else:
if (x == XBateau_un_IA) or (y == YBateau_un_IA) or (x == XBateau_deux_IA) or (y == YBateau_deux_IA):
compteur_de_point_joueur = compteur_de_point_joueur + 1
print "L'ennemis est en vue ! Pas mal boucanier !"
print "Vous marqué 1 point supplémentaire !!"
else:
print "Mille sabords !!! Raté !!! Recommencez marins d'eau douce !"
print "Voici votre total de point marqué :", compteur_de_point_joueur
print " "
list_resultat.append(compteur_de_point_joueur)
print list_resultat[0]
print
def nombre_de_joueur() :
print "Combien de joueur êtes vous ?"
nombre = int(input())
print "Vent dans les voiles !! Vent dans les voiles !!"
for k in range(0, nombre) :
Grille()
tour_joueur()
print " "
print " "
tour_IA()
taille = int(input("Veuillez saisir la taille du champs de bataille matelot !"))
XBateau_un_joueur = random.randint(0, taille - 1)#bateau n°1 du joueur
YBateau_un_joueur = random.randint(0, taille - 1)
XBateau_deux_joueur = random.randint(0, taille - 1)#bateau n°2 du joueur
YBateau_deux_joueur = random.randint(0, taille - 1)
XBateau_un_IA = random.randint(0, taille - 1)#bateau n°1 de l'IA
YBateau_un_IA = random.randint(0, taille - 1)
XBateau_deux_IA = random.randint(0, taille - 1)#bateau n°2 de l'IA
YBateau_deux_IA = random.randint(0, taille - 1)
nombre_de_joueur()
这是贝壳:
Traceback (most recent call last):
File "C:\Users\Marion\Documents\Marion\Work\ISN\BatailleNavale2.py", line 138, in <module>
nombre_de_joueur()
File "C:\Users\Marion\Documents\Marion\Work\ISN\BatailleNavale2.py", line 116, in nombre_de_joueur
Grille()
File "C:\Users\Marion\Documents\Marion\Work\ISN\BatailleNavale2.py", line 17, in Grille
tableau_joueur[XBateau_deux_joueur][YBateau_deux_joueur] = 1
UnboundLocalError: local variable 'XBateau_deux_joueur' referenced before assignment
回溯(最近一次呼叫最后一次):
文件“C:\Users\Marion\Documents\Marion\Work\ISN\BatailleNavale2.py”,第138行,在
名称为
文件“C:\Users\Marion\Documents\Marion\Work\ISN\BatailleNavale2.py”,第116行,名称为
格栅()
文件“C:\Users\Marion\Documents\Marion\Work\ISN\BatailleNavale2.py”,第17行,在网格中
表[XBateau_deux_jouer][YBateau_deux_jouer]=1
UnboundLocalError:赋值前引用的局部变量“XBateau_deux_jouer”
所以如果你有个主意
PS:对不起,如果我的英语不好。。。我是法国人 您在此处为变量赋值:
XBateau_deux_joueur = XBateau_deux_joueur + 1
tableau_joueur[XBateau_deux_joueur][YBateau_deux_joueur] = 1
Python在函数中看到这个赋值,然后在局部范围而不是全局范围内理解这个变量。所以这个变量并不是你认为它应该引用的全局变量。因此,当您在此处引用局部变量时:
XBateau_deux_joueur = XBateau_deux_joueur + 1
tableau_joueur[XBateau_deux_joueur][YBateau_deux_joueur] = 1
Python以前从未在函数的局部范围内看到过这个变量。名称未绑定,Python会抛出一个错误。如果要改为引用全局变量,请尝试以下操作:在引用该变量之前,将其声明为全局变量(在函数中):
在函数中为变量赋值时,除非另有说明,Python将假定该变量在整个函数的作用域中是局部的。它看起来好像不存在。
XBateau_deux_jouer=XBateau_deux_jouer+1
->XBateau_deux_jouer+=1
我现在有了这个。。。T\u T Traceback(最后一次调用):文件“C:\Users\Marion\Documents\Marion\Work\Is\BatailleNavale2.py”,第138行,在nombre\u-Jouer()文件“C:\Users\Marion\Documents\Marion\Work\Is\BatailleNavale2.py”第116行,在nombre\u-Jouer()文件“C:\Users\Marion\Documents\Documents\Marion\Documents\Marion\Is\BatailleNavale2.py”第17行,在网格表中[XBateau_deux_jouer][YBateau_deux_jouer]=1未绑定的局部错误:局部变量“XBateau_deux_jouer”在赋值前引用,但谢谢^^