2016-03-11 3 views
0

Je vais juste le dire mais j'ai vraiment besoin d'aide pour mon travail de cours.Un jeu de grille en python en utilisant seulement python

Je dois créer un genre de jeu de combat, mais pas comme vous l'imaginez. Je dois collecter des pièces mais éviter les navires. les pièces seront placées sur une grille de 10x10 et les vaisseaux aussi, l'idée est que vous collectionniez toutes les pièces et ne frappiez pas 3 vaisseaux.

La manière dont vous jouez est cependant de haut en bas sur les axes x et y. par exemple 3r me prendra 3 pas vers la droite et 3l me prendra 3 pas vers la gauche.

Maintenant, je ne veux pas que quelqu'un me code une solution parce que j'aime vraiment cette classe et j'aime vraiment la programmation de jeu mais c'est juste dur, ou au moins je trouve cela difficile.

donc je peux créer une grille de ~ pour les ondes je peux créer une liste des lieux que je veux mettre des pièces je peux créer une liste des lieux que je veux mettre des navires

ce que je pouvais aiment savoir comment puis-je placer un joueur et les déplacer en bas et à gauche et à droite, j'ai créé ma grille comme celui-ci

grid = [["~" for x in range(8)] for y in range(8)] 
for row in grid: 
    print(" ".join(row)) 

i ajouté toutes mes pièces en utilisant une liste comme des pièces = [[1,1] , [2,3]. . . ] même avec les navires, j'ai alors créé le code pour dire faire ces coorrdates dire un c ou un s

mon problème est que je peux obtenir un joueur pour montrer x mais je ne peux pas le déplacer.

pouvez-vous me montrer où je regarderais ou ce que je devrais me faire commencer off./ s'il vous plaît excpect plus de réponses que je veux essayer d'obtenir ce fait ce week-end

+0

Ce commentaire est peu utile. J'ai essayé de le faire moi-même, j'ai besoin d'un apport supplémentaire. Je ne vous demande pas de faire le travail s'il vous plaît re lire et m'offrir un moyen que je peux obtenir à la solution parce que maintenant il est clair que vous ne comprenez pas comment faire cela. – ICT

+0

Redessinez chaque chose à chaque fois que quelque chose bouge. Imprimez-vous les navires et les pièces de monnaie? Il semble que votre code imprime seulement "~~~ ..." dans une grille de 8x8. – syntonym

+0

oui je mets tous les coords des pièces de monnaie et les navires dans un tableau, donc le jeu sait à leur sujet si je atterris sur 3,3 et qui est dans la liste des coints je veux dire ajouter 25 points, je peux obtenir Ce travail si je tape manuellement dans les cordes, mais je ne peux pas sembler obtenir ma tête autour de déplacer le char personnage Char autour de la carte – ICT

Répondre

0
def move(arg): 
    def findX(): 
     for i in range(len(grid)): 
      for j in range(len(grid[0])): 
       if grid[i][j] == 'x': 
        return [i, j] 
    coordinates = findX() 
    x = coordinates[0] 
    y = coordinates[1] 
    if arg == "left": 
     grid[x][y] = "~" 
     grid[x][y-1] = "x" 
    elif arg == "right": 
     grid[x][y] = "~" 
     grid[x][y+1] = "x" 
    elif arg == "up": 
     grid[x][y] = "~" 
     grid[x-1][y] = "x" 
    elif arg == "down": 
     grid[x][y] = "~" 
     grid[x+1][y] = "x" 

Ce code peut faire la travail mobile. Notez qu'il manque de vérifier les erreurs, par exemple en appelant le move("left") mais le "x" étant déjà à la position la plus à gauche.

Si vous voulez jouer le jeu sur la console de telle sorte que l'entrée « R3 » et attend le « x » pour passer trois fois à droite, il vous suffit d'analyser l'entrée donnée et faire quelque chose de similaire à ceci:

direction = direction_parsed_from_input 
distance = distance_from_original_point 
for _ in range(distance): 
    move(direction) 
+0

je vois, ive été déconner avec mettre les coords dans une liste comme pos [:] et puis en regardant le premier élément de la liste si c'est un udlr alors nous savoir quel chemin de l'axe pour aller et puis la 2ème partie est le nombre de coups si R3, à droite 3. Je sorte de l'obtenir mais je ne peux pas sembler amener le joueur à se déplacer sur place et mettre l'endroit où il était juste retour à un ~ – ICT

+0

J'ai mis à jour le code pour donner un indice sur la façon de faire face à quelque chose comme "R3". –

+0

Je dois vous dire que cela semble incroyable, mais je ne peux pas le faire fonctionner dans mon jeu, je voulais éviter les fonctions pour le moment et sorte de faire le jeu pour refaire ligne par ligne avec les nouvelles positions de tout. J'apprécie vraiment cette façon de voir, merci pour votre aide jusqu'à présent. – ICT

0

ce que je suis venu avec, semble fonctionner

dr = input("Enter dir up:down:left:right").lower() 
move = int(input("Enter moves ")) 

newpos=playerpos 

if dr[0] == "r" and newpos[1]+move < gridsize: 
    board[playerpos[0]][playerpos[1]] = "~" 
    newpos[1]+=move 
elif dr[0] == "l" and newpos[1]-move >= 0: 
    board[playerpos[0]][playerpos[1]] = "~" 
    newpos[1]-=move 
elif dr[0] == "u" and newpos[0] - move >= 0: 
    board[playerpos[0]][playerpos[1]] = "~" 
    newpos[0]-=move 
elif dr[0] == "d" and newpos[0] - move <= gridsize: 
    board[playerpos[0]][playerpos[1]] = "~" 
    newpos[0]+=move 
else: 
    print("You cant move off the board") 

if newpos in coins: 
    totalcoins-=1 
    Win = True 
    break 
if newpos in ships: 
    Win = False 
    break 

playerpos = newpos 
board[playerpos[0]][playerpos[1]] = "x" 

for row in board: 
    print(" ".join(row)) 

Merci à tous ceux qui ont essayé d'aider, ne aurions pas pu le faire sans les pousse dans la bonne direction!