團隊-井字棋遊戲-項目總結

項目名稱:井字棋遊戲git

小組成員:宋沅修,周天翼,朱中浩,王金鑫,張浩dom

項目託管地址:https://gitee.com/zzttyy/jzq/blob/master/%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.py函數

項目說明:井字遊戲的遊戲界面是一個3*3的格子,系統提示玩家點擊棋盤的座標來表示要下的棋子的位置,若是玩家輸入的座標所在位置已經有棋子或者該座標已經超出了遊戲座標的範圍,就提示玩家從新輸入座標,。當有三個棋子在一條直線上的時候就結束遊戲,並輸出哪一個玩家贏了。post

使用說明:玩家1和玩家2各自輸入本身的棋子座標,來表示棋子的位置。若是某個玩家有三個棋子連成一條直線,則該玩家勝利,遊戲結束。ui

項目不足之處:遊戲界面太單一,輸出的棋盤過小等等。3d

項目代碼:blog

# -*- 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)

項目圖示:

 

 

 

 

 項目總結:經過此次團隊合做編寫井字棋項目,咱們小組經過運用所學的知識成功編寫出了井字棋項目,而且成功運行,讓咱們編寫程序的能力獲得了提高。不過咱們雖然分工明確,但各個部分的代碼仍是有一些麻煩和差錯須要解決,有的問題咱們不太容易解決,在解決這些問題之中,咱們也獲得了許多受益不淺的知識,使咱們之後編寫代碼會更加遊刃有餘。

相關文章
相關標籤/搜索