博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
团队编程项目进度
阅读量:5140 次
发布时间:2019-06-13

本文共 7105 字,大约阅读时间需要 23 分钟。

码云地址  https://gitee.com/zhanghao0225/JingZiQi/tree/master

-*- coding: cp936 -*-

#1-导入库

import pygame
from random import randint
#tkMessageBox 用来弹出对话框
import tkMessageBox
from pygame.locals import *
#2-初始化游戏
pygame.init()
width,height=480,480
#显示 样式 创建屏幕保存到变量中
screen=pygame.display.set_mode((width,height))
#标题
pygame.display.set_caption("jingziqi")
#插入图片
background=pygame.image.load("bjt.png")
#定义
empty = 0
black=(0,0,0)
red=(255,0,0)
blue=(0,0,255)
white=(255,255,255)
#创建绘制棋盘的函数
def draw_game():
#导入背景图
screen.blit(background,(0,0))
#画线
#用法:pygame.draw.line(显示,颜色,开始位置,结束位置,宽度)
pygame.draw.line(screen, black, (160, 0), (160, 480), 5)
pygame.draw.line(screen, black, (320, 0), (320, 480), 5)
pygame.draw.line(screen, black, (0, 160), (480, 160), 5)
pygame.draw.line(screen, black, (0, 320), (480, 320), 5)
#遍历列表中的元素及他们的下标 row横col竖 row col是下标
for row, line in enumerate(state):
for col, val in enumerate(line):
if val == -1:
#画x
upper_left = (col * 160 + 5, row * 160 + 5)
lower_right = (col * 160 + 155, row * 160 + 155)
pygame.draw.line(screen, red, upper_left, lower_right, 5)
upper_right = (col * 160 + 155, row * 160 + 5)
lower_left = (col * 160 + 5, row * 160 + 155)
pygame.draw.line(screen, red, upper_right, lower_left, 5)
elif val == 1:
#创建一个矩形.在矩形里画圆
rect = (col * 160 + 5, row * 160 + 5, 150, 150)
pygame.draw.ellipse(screen, blue, rect, 5)
else:
assert val == empty
continue
pygame.display.flip()
def draw_O():
#随机函数
while True:
row = randint(0,2)
col = randint(0,2)
#当空格为空的时候画圆
if state[row][col] == 0:
state[row][col] = 1
break
draw_game()
pygame.display.flip()
def is_won():
for val in range(3):
# 检查匹配的行三个图形是否都相同且不等于空

if state[0][val] == state[1][val] == state[2][val] != empty:

return state[0][val]
# 检查匹配的列三个图形是否都相同不等于空

if state[val][0] == state[val][1] == state[val][2] != empty: 

return state[val][0]
#判断 \ 中三个图形是否都相同
if state[0][0] == state[1][1] == state[2][2] != empty: 
return state[1][1]
#判断 / 中三个图形是否都相同
if state[0][2] == state[1][1] == state[2][0] != empty: 
return state[1][1]
#初始化棋盘 
def begin():
global state
state = [[empty] * 3,[empty] * 3,[empty] * 3]
draw_game()
#首先初始化 pygame.display.flip()
begin() 
#主循环 
while True: 
event=pygame.event.wait()
#初始化
pos = None
temp = 0
#接收到退出事件后退出程序
if event.type == pygame.QUIT:
pygame.quit()
exit(0)
#加入了按键功能
elif event.type == KEYDOWN:
if event.key == K_a:
begin()
draw_game()
pygame.display.flip()
elif event.key == K_s:
pygame.event.post(pygame.event.Event(QUIT))
#接受鼠标点击事件
elif event.type == MOUSEBUTTONDOWN and event.button == 1:
#event.pos[0]代表x轴坐标 event.pos[1]代表y轴坐标
pos = (event.pos[1]/160, event.pos[0]/160)
row,col=pos 
#if pygame.mouse.get_rel()==(0,0):
# continue
#加一个条件让它只能在空的时候画x
if state[row][col]==0:
state[row][col] = -1
else:
continue
print pos
draw_game()
draw_O()
#判断属性接受返回值
if is_won() == -1:
tkMessageBox.showinfo(title='win',message='win')
pygame.quit()
exit(0)
elif is_won() == 1:
tkMessageBox.showinfo(title='lose',message='lose')
pygame.quit()
exit(0)

 

-*- coding: cp936 -*-#1-导入库import pygamefrom random import randint#tkMessageBox 用来弹出对话框import tkMessageBoxfrom pygame.locals import *#2-初始化游戏pygame.init()width,height=480,480#显示 样式  创建屏幕保存到变量中screen=pygame.display.set_mode((width,height))#标题pygame.display.set_caption("jingziqi")#插入图片background=pygame.image.load("bjt.png")#定义empty = 0black=(0,0,0)red=(255,0,0)blue=(0,0,255)white=(255,255,255)#创建绘制棋盘的函数def draw_game():    #导入背景图    screen.blit(background,(0,0))    #画线    #用法:pygame.draw.line(显示,颜色,开始位置,结束位置,宽度)    pygame.draw.line(screen, black, (160, 0), (160, 480), 5)    pygame.draw.line(screen, black, (320, 0), (320, 480), 5)    pygame.draw.line(screen, black, (0, 160), (480, 160), 5)    pygame.draw.line(screen, black, (0, 320), (480, 320), 5)    #遍历列表中的元素及他们的下标 row横col竖 row col是下标    for row, line in enumerate(state):        for col, val in enumerate(line):            if val == -1:                #画x                upper_left = (col * 160 + 5, row * 160 + 5)                lower_right = (col * 160 + 155, row * 160 + 155)                pygame.draw.line(screen, red, upper_left, lower_right, 5)                                            upper_right = (col * 160 + 155, row * 160 + 5)                lower_left = (col * 160 + 5, row * 160 + 155)                pygame.draw.line(screen, red, upper_right, lower_left, 5)            elif val == 1:                #创建一个矩形.在矩形里画圆                rect = (col * 160 + 5, row * 160 + 5, 150, 150)                pygame.draw.ellipse(screen, blue, rect, 5)            else:                assert val == empty                continue    pygame.display.flip()def draw_O():        #随机函数          while True:                    row = randint(0,2)                    col = randint(0,2)                    #当空格为空的时候画圆                    if state[row][col] == 0:                              state[row][col] = 1                              break          draw_game()          pygame.display.flip()def is_won():          for val in range(3):                    # 检查匹配的行三个图形是否都相同且不等于空                    if state[0][val] == state[1][val] == state[2][val] != empty:                      return state[0][val]                                                  # 检查匹配的列三个图形是否都相同不等于空                    if state[val][0] == state[val][1] == state[val][2] != empty:                                                       return state[val][0]                              #判断 \ 中三个图形是否都相同          if state[0][0] == state[1][1] == state[2][2] != empty:                                return state[1][1]                    #判断 / 中三个图形是否都相同          if state[0][2] == state[1][1] == state[2][0] != empty:                                  return state[1][1]#初始化棋盘            def begin():                  global state                  state = [[empty] * 3,[empty] * 3,[empty] * 3]                  draw_game()#首先初始化                  pygame.display.flip()begin()                                #主循环    while True:     event=pygame.event.wait()    #初始化    pos = None    temp = 0    #接收到退出事件后退出程序    if event.type == pygame.QUIT:                    pygame.quit()                    exit(0)    #加入了按键功能    elif event.type == KEYDOWN:        if event.key == K_a:                begin()                draw_game()                pygame.display.flip()        elif event.key == K_s:                pygame.event.post(pygame.event.Event(QUIT))    #接受鼠标点击事件    elif event.type == MOUSEBUTTONDOWN and event.button == 1:        #event.pos[0]代表x轴坐标 event.pos[1]代表y轴坐标        pos = (event.pos[1]/160, event.pos[0]/160)        row,col=pos         #if pygame.mouse.get_rel()==(0,0):        # continue        #加一个条件让它只能在空的时候画x        if state[row][col]==0:            state[row][col] = -1        else:            continue        print pos        draw_game()        draw_O()    #判断属性接受返回值    if is_won() == -1:                    tkMessageBox.showinfo(title='win',message='win')                    pygame.quit()                    exit(0)    elif is_won() == 1:                    tkMessageBox.showinfo(title='lose',message='lose')                    pygame.quit()                    exit(0)

 

转载于:https://www.cnblogs.com/dazhanghao/p/7657734.html

你可能感兴趣的文章
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
tmux的简单快捷键
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
php match_model的简单使用
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
移动开发平台-应用之星app制作教程
查看>>
如何在maven工程中加载oracle驱动
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
下一代操作系统与软件
查看>>
Python IO模型
查看>>
DataGridView的行的字体颜色变化
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Android-多线程AsyncTask
查看>>
LeetCode【709. 转换成小写字母】
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>
【题解】青蛙的约会
查看>>
autopep8
查看>>