專案名稱:井字棋遊戲
小組成員:宋沅修,周天翼,朱中浩,王金鑫,張浩,鮑偉
專案說明:井字遊戲的遊戲介面是乙個3*3的格仔,系統提示玩家點選棋盤的座標來表示要下的棋子的位置,如果玩家輸入的座標所在位置已經有棋子或者該座標已經超出了遊戲座標的範圍,就提示玩家重新輸入座標,。當有三個棋子在一條直線上的時候就結束遊戲,並輸出哪個玩家贏了。
使用說明:玩家1和玩家2各自輸入自己的棋子座標,來表示棋子的位置。如果某個玩家有三個棋子連成一條直線,則該玩家勝利,遊戲結束。
專案不足之處:遊戲介面太單一,輸出的棋盤太小等等。
專案**:
# -*- 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:
#畫xupper_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)
專案圖示:
專案總結:通過這次團隊合作編寫井字棋專案,我們小組通過運用所學的知識成功編寫出了井字棋專案,並且成功執行,讓我們編寫程式的能力得到了提公升。不過我們雖然分工明確,但各個部分的**還是有一些麻煩和差錯需要解決,有的問題我們不太容易解決,在解決這些問題之中,我們也得到了許多受益匪淺的知識,使我們以後編寫**會更加游刃有餘。
課後作業 團隊程式設計專案總結
改換專案後,美食平台這個專案終於做出來了,團隊名稱 bug組 成員 王志昂 組長 鄭 月 李古宇孫晨旭 鞠牧孜程冠菲 專案名稱 吃貨之家 識食物者為俊傑 我們的專案可以說專為吃貨打造!這可以了解到大部分吃貨平台的主流食品,和吃貨群體。通過資料分析,可以找出人們的用餐習慣和對菜品的選擇。我感覺這個調研...
課後作業 團隊程式設計專案總結
成員 王志昂 組長 鄭 月李古宇 孫晨旭鞠牧孜 程冠菲說到底啥是品位其實我也不懂,忽然想起乙個曾經挺流行的說法,就是 小資 八十年代蘇州陸文夫寫過乙個著名的中篇 美食家 主角朱自治在 我 高小庭的眼裡倒真的是個標準的資本家,而且是個好吃成精的美食家 早晨要起個大早去朱鴻興吃頭湯麵,接下來到閶門石路去...
團隊 團隊程式設計專案作業名稱 專案總結
1.專案名稱 象棋遊戲 2.小組成員 高魯瑩,王梓晗,董馨遙,楊璐,崔曉爽,安澤鵬 3.開發背景 周圍有很多人喜歡玩象棋遊戲,本以為是很簡單的開發過程,沒想到費了這麼多周折,開發出的也僅僅能進行人機對戰。4.需求分析 棋盤棋子的局面 滑鼠響應控制棋子移動 棋子的走法規則 人機對弈的搜尋演算法 勝負判...