python游戏代码运行不了_无法使我的tic tac toe游戏在python中正确运行

转不到“玩家1”的原因是你的支票中缺少一个空格。你也没有正确地检查一个玩家何时获胜,这就是为什么你会有这种奇怪的行为。你需要检查每个位置,而不仅仅是最后一个。我还添加了对用户输入的检查,以确保用户输入的是一个数字,如果不是,它不会崩溃。

我完全不明白为什么你基本上把你的板打印颠倒,但我留下了原来的。

试试这个:

import random

def display_board(board): # Board setup

print('\n'*100)

print(board[7] + '|' + board[8] + '|' + board[9])

print(board[4] + '|' + board[5] + '|' + board[6])

print(board[1] + '|' + board[2] + '|' + board[3])

def player_input(): # Player assignment - use while loop to keep asking until a valid character is entered

marker = ''

while marker != 'X' and marker != 'O':

marker = input('Player1: Choose X or O: ').upper()

if marker == 'X':

return ('X','O')

else:

return ('O','X')

def place_marker(board, marker, position): # Allows player to place their marker at specific board index

board[position] = marker

def win_check(board, mark): # Check all rows, columns, diagonals for sharing the same marker to check for a winner

return ((board[1] == mark and board[2] == mark and board[3] == mark) or # Rows

(board[4] == mark and board[5] == mark and board[6] == mark) or

(board[7] == mark and board[8] == mark and board[9] == mark) or

(board[1] == mark and board[4] == mark and board[7] == mark) or # Columns

(board[2] == mark and board[5] == mark and board[8] == mark) or

(board[3] == mark and board[6] == mark and board[9] == mark) or

(board[1] == mark and board[5] == mark and board[9] == mark) or # Diagonals

(board[3] == mark and board[5] == mark and board[7] == mark))

def choose_first(): # Randomize who goes first

flip = random.randint(0,1)

if flip == 0:

return 'Player 1'

else:

return 'Player 2'

def space_check(board, position): # Check to see if a space on the board is still available

return board[position] == ' '

def full_board_check(board): # Checks to see if board is full resulting in a draw

for i in range(1,10):

if space_check(board,i): # If there is free space, board is NOT full

return False

return True

def player_choice(board): # Asks for the player's next move choice

position = 0

while position not in [1,2,3,4,5,6,7,8,9] or not space_check(board, position):

try:

position = int(input('Choose a position: (1-9): '))

except:

print("Please enter a valid number.")

return position

def replay(): # Asks if the players want to play again

choice = input("Play again? Enter Yes or No: ")

return choice == 'Yes'

# Logic to run the game

# While loop needed to keep running the game

# Need to break out of the while loop on replay()

print ('Welcome to TIC TAC TOE')

while True:

# Game Setup (Board, Players, Player turns)

the_board = [' ']*10

player1_marker,player2_marker = player_input()

turn = choose_first()

print(turn + ' will go first')

play_game = input('Ready to play? y or n: ')

if play_game == 'y':

game_on = True

else: game_on = False

# Game Play

while game_on:

if turn == 'Player 1':

# Show the board

display_board(the_board)

# Choose a place to move

position = player_choice(the_board)

# Place the marker on the position

place_marker(the_board,player1_marker,position)

# Check if they won

if win_check(the_board,player1_marker):

display_board(the_board)

print('PLAYER 1 HAS WON!')

game_on = False

else:

if full_board_check(the_board): # Check for tie

display_board(the_board)

print("TIE GAME!")

game_on = False

else:

turn = 'Player 2'

else:

# Show the board

display_board(the_board)

# Choose a place to move

position = player_choice(the_board)

# Place the marker on the position

place_marker(the_board,player2_marker,position)

# Check if they won

if win_check(the_board,player2_marker):

display_board(the_board)

print('PLAYER 2 HAS WON!')

game_on = False

else:

if full_board_check(the_board):

display_board(the_board)

print("TIE GAME!")

game_on = False

else:

turn = 'Player 1'

if not replay():

break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Csv解析CsvFile

Excel导出是非常常见的需求,而大多数时候只需要导出CSV格式文件即可。Csv文件非常简单以及快速,除了日常导出报表,还可以导出大量数据用于跨系统数据交换,曾经多次遇到一次性导出数百万行数据。NewLife.Core 内封装了CsvFile类&am…

java流的序列化_Java中的对象流和序列化介绍

最近,在讲流的使用,其中对象流的作用其实就是将自定义类的对象与流之间相互转换的流。看起来还是挺简单的,那么看下面的例子:public class Student{private int id;private String name;private String sex;private String tel;//…

【干货】人人都能看懂的LSTM

推荐阅读时间:8min~13min推荐理由:这是在看了台大李宏毅教授的深度学习视频之后的一点总结和感想。看完介绍的第一部分RNN尤其LSTM的介绍之后,整个人醍醐灌顶。10. 从RNN说起循环神经网络(Recurrent Neural Network,RN…

Csv数据库CsvDb

在工控领域,经常遇到断电关机数据库文件损坏的情况,SQLite如此,LiteDb也是这样。ZTO有数万自动化扫描设备,每天都有数百台设备因断电数据库损坏等原因,而不得不重装软件。因此,设计了CsvDb,用于…

Lucene的一些基本使用方法和概念 (JAVA)

Lucene是apache组织的一个用java实现全文搜索引擎的开源项目。其功能非常的强大,但api其实很简单的,它最主要就是做两件事:建立索引和进行搜索。1. 建立索引时最重要的几个术语* Document:一个要进行索引的单元,相当于数据库的一行…

java jdbc分页_使用JDBC进行分页查询

package day03;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Statement;import day01.JdbcUtil;/** 演示:JDBC的批量处理*/public class Demo3 {public static void main(String[] args) {// testI…

python计算四舍五入_Python实现小数四舍五入的方法

对小数在Python中实现四舍五入的方法,不能使用round函数,round函数的执行的是HALF EVEN,不是四舍五入(HALF UP)。而使用decimal模块提供的接口,就可以精确实现十进制小数的四舍五入。本文对这个topic进行详细介绍。Python的浮点数…

一位像素艺术家用39张动图,将大自然的唯美尽收眼底…

Lioness 是一位像素艺术家,会制作 Gifs、icons、实体模型以及像素艺术教程等等。但其实,他的大部分精力集中在大自然灵感艺术,“Natural Palettes”便是其中一个项目。在这个项目里面,除了常见的配色图片以外,以 GIF 形…

一起学习设计模式--02.简单工厂模式

工厂模式是最常用的一类创建型设计模式。我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。简单工厂模式是工厂方法模式的小弟,它不属于GoF 23种设计模式,但是在软件开发中应用也颇为频繁,通常将它作为学习其它…

python list remove 删除引用_Python——list列表操作一坑(remove)

问题发生背景:在一个对象被调用多次时候对象存入了列表暂时保存(主流程不能断开使用了while True),然后实例化了大批对象,具体你可参考打飞机游戏或者坦克大战发射子弹,每个子弹一个实例,创建的多到一定时候肯定是要释…

雨后漫步长安街

雨后漫步长安街,四处是祖国60华诞的味道,和城楼合个影,待百年庆典的时候拿出来看一定别有一番滋味。那时我都是老婆婆了……转载于:https://blog.51cto.com/xurui/200059

hive 导入mysql数据库_求助 Hive 导入MYsql 数据库 报错啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼sqoop export \--connect "jdbc:mysql://localhost:3306/emp?characterEncodingUTF8" \--username root \--password 123456 \--input-fields-terminated-by , \--table t_dim_sqoop \--export-dir /user/hive/warehous…

聊一聊Load Average

背景 前段时间,由于有几个应用引入了 prometheus-net.DotNetRuntime 这个组件,导致系统 CPU 间歇性飙升。这是这个组件一个已知的雷。。同样也引发了系统的 Load Average (平均负载) 十分不正常。这是一台 4C8G 的服务器,Load Average 却是达…

我的邮局系统,欢迎大家注册!hotxf.com

我的邮局系统,欢迎大家注册!hotxf.com mail.hotxf.com 可用于登陆MSN和邮件,25G网络硬盘我在使用 Windows Live 为 hotxf.com 托管电子邮件。我想邀请您在 hotxf.com 中创建电子邮件地址。您可以通过单击 https://domains.live.com/m…

优雅的读懂支持向量机 SVM 算法

转自:JerryLeadhttp://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html简介支持向量机基本上是最好的有监督学习算法了。最开始接触SVM是去年暑假的时候,老师要求交《统计学习理论》的报告,那时去网上下了一份入门教程&#xff0…

python socket自动重连_详解python3中socket套接字的编码问题解决

一、TCP1、tcp服务器创建#创建服务器from socket import *from time import ctime #导入ctimeHOST #任意主机PORT 21567 #随机提供个端口号BUFSIZ 1024 # 缓冲区大小设置为1KB,可以根据网络性能和程序需要改变这个容量ADDR (HOST, PORT)tcpSerSock socket(AF_…

java压缩成.tar_java压缩tar.gz | 学步园

zlib、gzip、zip这三个概念的确比较容易混淆:zlib是一种数据压缩程序库,它的设计目标是处理单纯的数据(而不管数据的来源是什么)。gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件。gzip在压缩文件中的…

CentOS 介绍

CentOS是Community ENTerprise Operating System的简称,我们有很多人叫它社区企业操作系统,不管你怎么叫它,它都是linux的一个发行版本。CentOS并不是全新的linux发行版,倘若一说到RedHat这个大名,大家似乎都听过&…

Newbe.Claptrap 0.9.4 发布,全新构建

Newbe.Claptrap 0.9.4 发布,全新构建,全新内容,全新体验。简介 此次的版本更新虽然只是一个副版本更新。但实际上我们带来了非常多全新的内容。全方位将本框架带入到一个新的次代。我们希望我们的努力可以为在业务中需要 Actor 模式的开发者带…

【知识贴】战争中的数学应用

一、方程在海湾战争中的应用