Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 巨蟒战舰_Python - Fatal编程技术网

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”在赋值前引用,但谢谢^^