Compare commits
No commits in common. 'develop' and 'master' have entirely different histories.
@ -1,3 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
@ -1 +0,0 @@
|
|||||||
main.py
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="PYTHON_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager">
|
|
||||||
<content url="file://$MODULE_DIR$" />
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
<component name="InspectionProjectProfileManager">
|
|
||||||
<settings>
|
|
||||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
|
||||||
<version value="1.0" />
|
|
||||||
</settings>
|
|
||||||
</component>
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
|
|
||||||
<component name="PyPackaging">
|
|
||||||
<option name="earlyReleasesAsUpgrades" value="true" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/Jungle.iml" filepath="$PROJECT_DIR$/.idea/Jungle.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
|
||||||
<mapping directory="$PROJECT_DIR$/animalchess" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
SOCKET_HOST=127.0.0.1
|
|
||||||
SOCKET_PORT=50005
|
|
||||||
MAX_WAITING_TIME=600
|
|
||||||
MAX_THNIKING_TIME=30
|
|
||||||
MAX_TOTAL_TIME=1000
|
|
||||||
@ -1,268 +0,0 @@
|
|||||||
# coding:utf-8
|
|
||||||
import socket
|
|
||||||
import sys
|
|
||||||
import json
|
|
||||||
import uuid
|
|
||||||
import time
|
|
||||||
from threading import Thread, Lock
|
|
||||||
|
|
||||||
if (sys.version[:1] == "3"):
|
|
||||||
import queue as Queue
|
|
||||||
from _thread import *
|
|
||||||
else:
|
|
||||||
import Queue
|
|
||||||
from thread import *
|
|
||||||
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
SOCKET_HOST = '127.0.0.1' # Symbolic name meaning all available interfaces
|
|
||||||
SOCKET_PORT = 50005 # Arbitrary non-privileged port
|
|
||||||
MAX_WAITING_TIME = 180
|
|
||||||
MAX_THNIKING_TIME = 60
|
|
||||||
MAX_TOTAL_TIME = 600
|
|
||||||
|
|
||||||
|
|
||||||
class Client:
|
|
||||||
def __init__(self, conn, addr, name, side, time, total):
|
|
||||||
self.conn = conn
|
|
||||||
self.addr = addr
|
|
||||||
self.name = name
|
|
||||||
self.side = side
|
|
||||||
self.time = time
|
|
||||||
self.total = total
|
|
||||||
|
|
||||||
|
|
||||||
mutex = Lock()
|
|
||||||
mutex_playing = Lock()
|
|
||||||
|
|
||||||
playing_ones = {}
|
|
||||||
waiting_players = Queue.Queue()
|
|
||||||
|
|
||||||
|
|
||||||
# init queues
|
|
||||||
# for games in range(1, 10):
|
|
||||||
# waiting_players[games] = Queue.Queue()
|
|
||||||
|
|
||||||
def load_config():
|
|
||||||
with open('config.txt', 'r') as f:
|
|
||||||
for line in f.readlines():
|
|
||||||
line = line.strip()
|
|
||||||
if line.find('SOCKET_HOST=') >= 0:
|
|
||||||
Config.SOCKET_HOST = line[line.index('=') + 1:]
|
|
||||||
elif line.find('SOCKET_PORT=') >= 0:
|
|
||||||
Config.SOCKET_PORT = int(line[line.index('=') + 1:])
|
|
||||||
elif line.find('MAX_WAITING_TIME=') >= 0:
|
|
||||||
Config.MAX_WAITING_TIME = int(line[line.index('=') + 1:])
|
|
||||||
elif line.find('MAX_THNIKING_TIME=') >= 0:
|
|
||||||
Config.MAX_THNIKING_TIME = int(line[line.index('=') + 1:])
|
|
||||||
elif line.find('MAX_TOTAL_TIME=') >= 0:
|
|
||||||
Config.MAX_TOTAL_TIME = int(line[line.index('=') + 1:])
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def get_counterpart_from(waiting_ones):
|
|
||||||
counterpart = None
|
|
||||||
mutex.acquire()
|
|
||||||
if not waiting_ones.empty():
|
|
||||||
counterpart = waiting_ones.get()
|
|
||||||
mutex.release()
|
|
||||||
return counterpart
|
|
||||||
|
|
||||||
|
|
||||||
def to_wait_in_queue(client, the_queue):
|
|
||||||
mutex.acquire()
|
|
||||||
the_queue.put(client)
|
|
||||||
mutex.release()
|
|
||||||
|
|
||||||
|
|
||||||
def remove_one_from_queue(the_queue):
|
|
||||||
mutex.acquire()
|
|
||||||
if (the_queue.qsize() == 1):
|
|
||||||
the_queue.get()
|
|
||||||
mutex.release()
|
|
||||||
|
|
||||||
|
|
||||||
def send_msg_to(client, msg):
|
|
||||||
packet = json.dumps(msg)
|
|
||||||
if (sys.version[:1] == "3"):
|
|
||||||
packet = packet.encode('utf-8')
|
|
||||||
# print(client.addr[0] + ":" + str(client.addr[1]) + "\t" + str(msg))
|
|
||||||
client.conn.send(packet)
|
|
||||||
|
|
||||||
|
|
||||||
def __start_match_between(client0, client1):
|
|
||||||
match_uuid = str(uuid.uuid4())
|
|
||||||
mutex_playing.acquire()
|
|
||||||
playing_ones[match_uuid] = (client0, client1)
|
|
||||||
mutex_playing.release()
|
|
||||||
|
|
||||||
client0.side = 0
|
|
||||||
client0.time = Config.MAX_THNIKING_TIME
|
|
||||||
client0.total = Config.MAX_TOTAL_TIME
|
|
||||||
client1.side = 1
|
|
||||||
client1.time = -1
|
|
||||||
client1.total = Config.MAX_TOTAL_TIME
|
|
||||||
|
|
||||||
msg0 = {
|
|
||||||
"status": 1,
|
|
||||||
"counterpart_name": client1.name,
|
|
||||||
"game_id": match_uuid,
|
|
||||||
"side": client0.side,
|
|
||||||
"think_time": Config.MAX_THNIKING_TIME,
|
|
||||||
"total_time": Config.MAX_TOTAL_TIME,
|
|
||||||
}
|
|
||||||
send_msg_to(client0, msg0)
|
|
||||||
msg1 = {
|
|
||||||
"status": 1,
|
|
||||||
"counterpart_name": client0.name,
|
|
||||||
"game_id": match_uuid,
|
|
||||||
"side": client1.side,
|
|
||||||
"think_time": Config.MAX_THNIKING_TIME,
|
|
||||||
"total_time": Config.MAX_TOTAL_TIME,
|
|
||||||
}
|
|
||||||
send_msg_to(client1, msg1)
|
|
||||||
|
|
||||||
|
|
||||||
def join_game_handler(msg, addr, conn):
|
|
||||||
new_client = Client(conn, addr, msg['name'], -1, -1, -1)
|
|
||||||
# game_type = msg["id"]
|
|
||||||
# the_queue = waiting_players[game_type]
|
|
||||||
counterpart = get_counterpart_from(waiting_players)
|
|
||||||
if not counterpart: # wait
|
|
||||||
to_wait_in_queue(new_client, waiting_players)
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
# counterpart=get_counterpart_from(waiting_players[game_type])
|
|
||||||
__start_match_between(new_client, counterpart)
|
|
||||||
|
|
||||||
|
|
||||||
def quit_game_handler(msg):
|
|
||||||
match_uuid = msg['game_id']
|
|
||||||
if match_uuid is None:
|
|
||||||
remove_one_from_queue(waiting_players)
|
|
||||||
return
|
|
||||||
pairs = None
|
|
||||||
mutex_playing.acquire()
|
|
||||||
if (match_uuid in playing_ones):
|
|
||||||
pairs = playing_ones[match_uuid]
|
|
||||||
del playing_ones[match_uuid]
|
|
||||||
mutex_playing.release()
|
|
||||||
|
|
||||||
if pairs is not None:
|
|
||||||
if (pairs[0].side == msg['side']):
|
|
||||||
to_notify = pairs[1]
|
|
||||||
else:
|
|
||||||
to_notify = pairs[0]
|
|
||||||
msg = {
|
|
||||||
"status": 2, # exit
|
|
||||||
"game_id": match_uuid,
|
|
||||||
"side": msg['side'],
|
|
||||||
"request": msg['request'],
|
|
||||||
}
|
|
||||||
send_msg_to(to_notify, msg)
|
|
||||||
|
|
||||||
|
|
||||||
def timer_thread():
|
|
||||||
while True:
|
|
||||||
time.sleep(1)
|
|
||||||
mutex_playing.acquire()
|
|
||||||
for game_id in list(playing_ones.keys()):
|
|
||||||
(client0, client1) = playing_ones[game_id]
|
|
||||||
# print("%d - %d" % (client0.time, client1.time))
|
|
||||||
if (client0.time < 0):
|
|
||||||
client = client1
|
|
||||||
else:
|
|
||||||
client = client0
|
|
||||||
|
|
||||||
if (client.time == 0 or client.total == 0):
|
|
||||||
msg = {
|
|
||||||
"status": 3, # timeout exit
|
|
||||||
"game_id": game_id,
|
|
||||||
"side": client.side,
|
|
||||||
}
|
|
||||||
send_msg_to(client0, msg)
|
|
||||||
send_msg_to(client1, msg)
|
|
||||||
del playing_ones[game_id]
|
|
||||||
else:
|
|
||||||
client.time -= 1
|
|
||||||
client.total -= 1
|
|
||||||
mutex_playing.release()
|
|
||||||
|
|
||||||
|
|
||||||
def transfer_message(msg):
|
|
||||||
match_uuid = msg['game_id']
|
|
||||||
pairs = playing_ones[match_uuid]
|
|
||||||
if (pairs[0].side == msg['side']):
|
|
||||||
to_notify = pairs[1]
|
|
||||||
pairs[0].time = -1
|
|
||||||
else:
|
|
||||||
to_notify = pairs[0]
|
|
||||||
pairs[1].time = -1
|
|
||||||
to_notify.time = Config.MAX_THNIKING_TIME
|
|
||||||
send_msg_to(to_notify, msg)
|
|
||||||
|
|
||||||
|
|
||||||
def client_thread(conn, addr):
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
data = conn.recv(1024)
|
|
||||||
if not data:
|
|
||||||
break
|
|
||||||
print(data)
|
|
||||||
data = json.loads(data)
|
|
||||||
|
|
||||||
if not 'type' in data:
|
|
||||||
transfer_message(data['msg'])
|
|
||||||
continue
|
|
||||||
if data['type'] == 0:
|
|
||||||
join_game_handler(data['msg'], addr, conn)
|
|
||||||
continue
|
|
||||||
elif data['type'] == 1:
|
|
||||||
transfer_message(data['msg'])
|
|
||||||
continue
|
|
||||||
elif data['type'] == 2:
|
|
||||||
quit_game_handler(data['msg'])
|
|
||||||
break
|
|
||||||
elif data['type'] == 3:
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
# delivering message between the two clients
|
|
||||||
transfer_message(data['msg'])
|
|
||||||
continue
|
|
||||||
except:
|
|
||||||
break
|
|
||||||
# came out of loop
|
|
||||||
conn.close()
|
|
||||||
|
|
||||||
|
|
||||||
# print("conneection exit!")
|
|
||||||
|
|
||||||
def main():
|
|
||||||
load_config()
|
|
||||||
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
||||||
print('Socket server created')
|
|
||||||
# try:
|
|
||||||
server.bind((Config.SOCKET_HOST, Config.SOCKET_PORT))
|
|
||||||
# except (socket.error, msg):
|
|
||||||
# print ('Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
|
|
||||||
# sys.exit()
|
|
||||||
|
|
||||||
print('Socket bind complete')
|
|
||||||
server.listen(10)
|
|
||||||
print('Socket now listening')
|
|
||||||
|
|
||||||
# now keep talking with the client
|
|
||||||
start_new_thread(timer_thread, ())
|
|
||||||
while True:
|
|
||||||
# wait to accept a connection - blocking call
|
|
||||||
conn, addr = server.accept()
|
|
||||||
print('Connected with ' + addr[0] + ':' + str(addr[1]))
|
|
||||||
|
|
||||||
# start new thread takes 1st argument as a function name to be run, second is the tuple of arguments to the function.
|
|
||||||
start_new_thread(client_thread, (conn, addr))
|
|
||||||
server.close()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
@ -1 +0,0 @@
|
|||||||
main.py
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
<component name="InspectionProjectProfileManager">
|
|
||||||
<settings>
|
|
||||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
|
||||||
<version value="1.0" />
|
|
||||||
</settings>
|
|
||||||
</component>
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
|
|
||||||
</project>
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/src.iml" filepath="$PROJECT_DIR$/.idea/src.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="PYTHON_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager">
|
|
||||||
<content url="file://$MODULE_DIR$" />
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
import main
|
|
||||||
import math
|
|
||||||
|
|
||||||
'''
|
|
||||||
// 负极大值算法
|
|
||||||
int negamax(GameState S, int depth, int alpha, int beta) {
|
|
||||||
// 游戏是否结束 || 探索的递归深度是否到边界
|
|
||||||
if ( gameover(S) || depth == 0 ) {
|
|
||||||
return evaluation(S);
|
|
||||||
}
|
|
||||||
// 依据预估(历史, 经验)对可行步, 进行排序
|
|
||||||
sort (candidate list);
|
|
||||||
// 遍历每一个候选步
|
|
||||||
foreach ( move in candidate list ) {
|
|
||||||
S' = makemove(S);
|
|
||||||
value = -negamax(S', depth - 1, -beta, -alpha);
|
|
||||||
unmakemove(S')
|
|
||||||
if ( value > alpha ) {
|
|
||||||
// alpha + beta剪枝点
|
|
||||||
if ( value >= beta ) {
|
|
||||||
return beta;
|
|
||||||
}
|
|
||||||
alpha = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return alpha;
|
|
||||||
}
|
|
||||||
'''
|
|
||||||
|
|
||||||
def h(State):
|
|
||||||
return 0
|
|
||||||
def negaMax(State,depth,alpha,beta,moveList):
|
|
||||||
if depth == 0:
|
|
||||||
return h(State)
|
|
||||||
moveList=sorted(moveList)
|
|
||||||
for move in moveList:
|
|
||||||
newState = State#update state
|
|
||||||
value = -negaMax(newState,depth - 1,-beta,-alpha)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 211 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 516 B |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 10 KiB |
@ -1,212 +0,0 @@
|
|||||||
import pygame
|
|
||||||
import os
|
|
||||||
pygame.init()
|
|
||||||
pygame.font.init()
|
|
||||||
pygame.mixer.init()
|
|
||||||
|
|
||||||
WIDTH , HEIGHT = 1200 , 800
|
|
||||||
CHESSSIZE_X=120
|
|
||||||
CHESSSIZE_Y=100 #棋子大小
|
|
||||||
|
|
||||||
#animals rect
|
|
||||||
l_elephant = pygame.Rect(281,10,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
l_eagle = pygame.Rect(157,120,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
l_wolf = pygame.Rect(284,229,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
l_lion = pygame.Rect(282,343,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
l_leopard = pygame.Rect(285,450,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
l_mouse = pygame.Rect(285,665,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
l_fox = pygame.Rect(157,557,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
|
|
||||||
r_elephant = pygame.Rect(795,673,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
r_eagle = pygame.Rect(925,570,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
r_wolf = pygame.Rect(803,458,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
r_lion = pygame.Rect(802,347,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
r_leopard = pygame.Rect(796,232,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
r_fox = pygame.Rect(920,123,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
r_mouse = pygame.Rect(793,16,CHESSSIZE_Y,CHESSSIZE_Y)
|
|
||||||
#############################################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def calc(x,y):#将像素转化为抽象坐标
|
|
||||||
new_x = int((x + 10) / WIDTH * 9)
|
|
||||||
new_y = int((y + 10) / HEIGHT * 7)
|
|
||||||
return (new_x,new_y)
|
|
||||||
def tran(x,y):#将抽象坐标转化为像素
|
|
||||||
new_x = int(x / 9 * WIDTH)
|
|
||||||
new_y = int(y / 7 * HEIGHT)
|
|
||||||
return (new_x,new_y)
|
|
||||||
|
|
||||||
def calc_map():
|
|
||||||
MAP = [[0 for i in range(7)] for i in range(9)]
|
|
||||||
x,y=calc(87,278)
|
|
||||||
MAP[x][y] = 15
|
|
||||||
x,y = calc(211,378)
|
|
||||||
MAP[x][y] = 15
|
|
||||||
x,y = calc(85,496)
|
|
||||||
MAP[x][y] = 15
|
|
||||||
x,y = calc(81,388)
|
|
||||||
MAP[x][y] = 16
|
|
||||||
x,y = calc(1105,282)
|
|
||||||
MAP[x][y] = 17
|
|
||||||
x,y = calc(976,381)
|
|
||||||
MAP[x][y] = 17
|
|
||||||
x,y = calc(1114,497)
|
|
||||||
MAP[x][y] = 17
|
|
||||||
x,y = calc(1102,379)
|
|
||||||
MAP[x][y] = 18
|
|
||||||
x,y = calc(468,185)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(597,180)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(714,184)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(472,273)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(595,275)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(705,275)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(479,505)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(591,504)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(718,514)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(467,598)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(593,604)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x,y = calc(719,604)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
# 将动物的像素坐标转化为格子x-y轴坐标
|
|
||||||
r_elephant_x = int((r_elephant.x + 20) / WIDTH * 9)
|
|
||||||
r_elephant_y = int((r_elephant.y + 20) / HEIGHT * 7)
|
|
||||||
MAP[r_elephant_x][r_elephant_y] = 14
|
|
||||||
r_eagle_x = int((r_eagle.x + 20) / WIDTH * 9)
|
|
||||||
r_eagle_y = int((r_eagle.y + 20) / HEIGHT * 7)
|
|
||||||
MAP[r_eagle_x][r_eagle_y] = 9
|
|
||||||
r_wolf_x = int((r_wolf.x) / WIDTH * 9)
|
|
||||||
r_wolf_y = int(r_wolf.y / HEIGHT * 7)
|
|
||||||
MAP[r_wolf_x][r_wolf_y] = 11
|
|
||||||
r_lion_x = int((r_lion.x) / WIDTH * 9)
|
|
||||||
r_lion_y = int(r_lion.y / HEIGHT * 7)
|
|
||||||
MAP[r_lion_x][r_lion_y] = 13
|
|
||||||
r_leopard_x = int((r_leopard.x + 20) / WIDTH * 9)
|
|
||||||
r_leopard_y = int(r_leopard.y / HEIGHT * 7)
|
|
||||||
MAP[r_leopard_x][r_leopard_y] = 12
|
|
||||||
r_mouse_x = int((r_mouse.x + 20) / WIDTH * 9)
|
|
||||||
r_mouse_y = int(r_mouse.y / HEIGHT * 7)
|
|
||||||
MAP[r_mouse_x][r_mouse_y] = 8
|
|
||||||
r_fox_x = int((r_fox.x + 20) / WIDTH * 9)
|
|
||||||
r_fox_y = int((r_fox.y) / HEIGHT * 7)
|
|
||||||
MAP[r_fox_x][r_fox_y] = 10
|
|
||||||
|
|
||||||
l_elephant_x = int(l_elephant.x / WIDTH * 9)
|
|
||||||
l_elephant_y = int(l_elephant.y / HEIGHT * 7)
|
|
||||||
MAP[l_elephant_x][l_elephant_y] = 7
|
|
||||||
l_eagle_x = int(l_eagle.x / WIDTH * 9)
|
|
||||||
l_eagle_y = int(l_eagle.y / HEIGHT * 7)
|
|
||||||
MAP[l_eagle_x][l_eagle_y] = 2
|
|
||||||
l_wolf_x = int(l_wolf.x / WIDTH * 9)
|
|
||||||
l_wolf_y = int(l_wolf.y / HEIGHT * 7)
|
|
||||||
MAP[l_wolf_x][l_wolf_y] = 4
|
|
||||||
l_lion_x = int(l_lion.x / WIDTH * 9)
|
|
||||||
l_lion_y = int(l_lion.y / HEIGHT * 7)
|
|
||||||
MAP[l_lion_x][l_lion_y] = 6
|
|
||||||
l_leopard_x = int(l_leopard.x / WIDTH * 9)
|
|
||||||
l_leopard_y = int((l_leopard.y + 20) / HEIGHT * 7)
|
|
||||||
MAP[l_leopard_x][l_leopard_y] = 5
|
|
||||||
l_mouse_x = int(l_mouse.x / WIDTH * 9)
|
|
||||||
l_mouse_y = int((l_mouse.y + 30) / HEIGHT * 7)
|
|
||||||
MAP[l_mouse_x][l_mouse_y] = 1
|
|
||||||
l_fox_x = int(l_fox.x / WIDTH * 9)
|
|
||||||
l_fox_y = int((l_fox.y + 20) / HEIGHT * 7)
|
|
||||||
MAP[l_fox_x][l_fox_y] = 3
|
|
||||||
#############################
|
|
||||||
##print(MAP1)
|
|
||||||
return MAP
|
|
||||||
|
|
||||||
def clac_MAP1():
|
|
||||||
MAP = [[0 for i in range(7)] for i in range(9)]
|
|
||||||
x, y = calc(87, 278)
|
|
||||||
MAP[x][y] = 15
|
|
||||||
x, y = calc(211, 378)
|
|
||||||
MAP[x][y] = 15
|
|
||||||
x, y = calc(85, 496)
|
|
||||||
MAP[x][y] = 15
|
|
||||||
x, y = calc(81, 388)
|
|
||||||
MAP[x][y] = 16
|
|
||||||
x, y = calc(1105, 282)
|
|
||||||
MAP[x][y] = 17
|
|
||||||
x, y = calc(976, 381)
|
|
||||||
MAP[x][y] = 17
|
|
||||||
x, y = calc(1114, 497)
|
|
||||||
MAP[x][y] = 17
|
|
||||||
x, y = calc(1102, 379)
|
|
||||||
MAP[x][y] = 18
|
|
||||||
x, y = calc(468, 185)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(597, 180)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(714, 184)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(472, 273)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(595, 275)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(705, 275)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(479, 505)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(591, 504)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(718, 514)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(467, 598)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(593, 604)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
x, y = calc(719, 604)
|
|
||||||
MAP[x][y] = 20
|
|
||||||
return MAP
|
|
||||||
|
|
||||||
def refresh():
|
|
||||||
l_elephant = pygame.Rect(281, 10, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
l_eagle = pygame.Rect(157, 120, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
l_wolf = pygame.Rect(284, 229, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
l_lion = pygame.Rect(282, 343, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
l_leopard = pygame.Rect(285, 450, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
l_mouse = pygame.Rect(285, 665, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
l_fox = pygame.Rect(157, 557, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
|
|
||||||
r_elephant = pygame.Rect(795, 673, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
r_eagle = pygame.Rect(925, 570, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
r_wolf = pygame.Rect(803, 458, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
r_lion = pygame.Rect(802, 347, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
r_leopard = pygame.Rect(796, 232, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
r_fox = pygame.Rect(920, 123, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
r_mouse = pygame.Rect(793, 16, CHESSSIZE_Y, CHESSSIZE_Y)
|
|
||||||
return l_elephant,l_eagle,l_wolf, l_lion,l_leopard, l_mouse,l_fox,r_elephant,r_eagle,r_wolf,r_lion,r_leopard,r_fox,r_mouse
|
|
||||||
|
|
||||||
def getAnimalsname():
|
|
||||||
animalsName=[0,l_mouse,l_eagle,l_fox,l_wolf,l_leopard,l_lion,l_elephant,r_mouse,r_eagle,r_fox,r_wolf,r_leopard,r_lion,r_elephant]
|
|
||||||
return animalsName
|
|
||||||
|
|
||||||
def update(animalsName):
|
|
||||||
l_mouse = animalsName[1]
|
|
||||||
l_eagle = animalsName[2]
|
|
||||||
l_fox = animalsName[3]
|
|
||||||
l_wolf = animalsName[4]
|
|
||||||
l_leopard = animalsName[5]
|
|
||||||
l_lion = animalsName[6]
|
|
||||||
l_elephant = animalsName[7]
|
|
||||||
|
|
||||||
r_mouse = animalsName[8]
|
|
||||||
r_eagle = animalsName[9]
|
|
||||||
r_fox = animalsName[10]
|
|
||||||
r_wolf = animalsName[11]
|
|
||||||
r_leopard = animalsName[12]
|
|
||||||
r_lion = animalsName[13]
|
|
||||||
r_elephant = animalsName[14]
|
|
||||||
return l_elephant, l_eagle, l_wolf, l_lion, l_leopard, l_mouse, l_fox, r_elephant, r_eagle, r_wolf, r_lion, r_leopard, r_fox, r_mouse
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
import pygame
|
|
||||||
import pygame_menu
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def pause():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def report():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def surrender():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def start_menu():
|
|
||||||
pygame.init()
|
|
||||||
surface = pygame.display.set_mode((600, 400))
|
|
||||||
menu = pygame_menu.Menu('DO YOUR ACTIONS', 400, 300, theme = pygame_menu.themes.THEME_BLUE)
|
|
||||||
menu.add.button('Pause', pause)
|
|
||||||
menu.add.button('Surrender', surrender)
|
|
||||||
menu.add.button('Report', report)
|
|
||||||
menu.add.button('Quit', pygame_menu.events.EXIT)
|
|
||||||
|
|
||||||
menu.mainloop(surface)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
start_menu()
|
|
||||||
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 516 B |
@ -1,32 +0,0 @@
|
|||||||
import pygame
|
|
||||||
|
|
||||||
|
|
||||||
rules = {}
|
|
||||||
for i in range(1, 8):
|
|
||||||
eaten = [i]
|
|
||||||
for j in range(1, i):
|
|
||||||
eaten.append(j)
|
|
||||||
rules[i] = eaten
|
|
||||||
rules[1].append(7)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hint = pygame.image.load("hint.png")
|
|
||||||
capture_hint = pygame.image.load("capture_hint.png")
|
|
||||||
def tran(x,y):
|
|
||||||
pass
|
|
||||||
def ismove(old_x, old_y, x, y, id, MAP):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def path(id, x, y, status):
|
|
||||||
if status:
|
|
||||||
movement = []
|
|
||||||
for i in range(9):
|
|
||||||
for j in range(7):
|
|
||||||
if ismove(x, y, i, j, id, MAP):
|
|
||||||
movement.append([i, j])
|
|
||||||
for i, j in movement:
|
|
||||||
WIN.blit(hint, tran(i,j))
|
|
||||||
WIN.blit(capture_hint,tran(x,y))
|
|
||||||
else:
|
|
||||||
pass#重新绘制
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
def f(x):
|
|
||||||
x = 1
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
class Player:
|
|
||||||
def __init__(self, counterpart_name=None,name=None, game_id=None, side=None,think_time=30,total_time=600,id = None,status_2 = None,request = None,invalid = 1,Left_win = 0,Right_win = 0,over_time_side = None):
|
|
||||||
self.name = name
|
|
||||||
self.game_id = game_id
|
|
||||||
self.side = side
|
|
||||||
self.think_time = think_time
|
|
||||||
self.total_time = total_time
|
|
||||||
self.id = id
|
|
||||||
self.status_2 = status_2
|
|
||||||
self.counterpart_name = counterpart_name
|
|
||||||
self.request = request
|
|
||||||
self.invalid = invalid
|
|
||||||
self.Left_win = Left_win
|
|
||||||
self.Right_win = Right_win
|
|
||||||
self.over_time_side = over_time_side
|
|
||||||
|
|
||||||
|
|
||||||
class Chessmen_axis:
|
|
||||||
def __init__(self, Axis):
|
|
||||||
self.axis = [{} for i in range(15)]
|
|
||||||
for i in range(1,15):
|
|
||||||
old_x, old_y = Axis[i]
|
|
||||||
self.axis[i]["old_x"] = old_x
|
|
||||||
self.axis[i]["old_y"] = old_y
|
|
||||||
self.axis[i]["x"] = old_x
|
|
||||||
self.axis[i]["y"] = old_y
|
|
||||||
|
|
||||||
def set_axix(self, id, old_x, old_y, x, y):
|
|
||||||
self.axis[id]["old_x"] = old_x
|
|
||||||
self.axis[id]["old_y"] = old_y
|
|
||||||
self.axis[id]["x"] = x
|
|
||||||
self.axis[id]["y"] = y
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,174 +0,0 @@
|
|||||||
import pygame
|
|
||||||
import init
|
|
||||||
|
|
||||||
|
|
||||||
font_addr = pygame.font.get_default_font()
|
|
||||||
font = pygame.font.Font(font_addr, 36)
|
|
||||||
BLACK = (0,0,0)
|
|
||||||
LIGHTBLUE = (40,191,255)
|
|
||||||
LIGHTBLUE2 = (0,0,255)
|
|
||||||
BGCOLOR = (230,230,250)
|
|
||||||
MAGENTA = (255,0,255)
|
|
||||||
LIGHTYELLOW = (255,225,0)
|
|
||||||
MYCOLOR = (255,165,0)
|
|
||||||
WHITE = (255,255,255)
|
|
||||||
GREEN = (0,255,0)
|
|
||||||
RED = (255,0,0)
|
|
||||||
BLUE = (0,0,255)
|
|
||||||
Crimson = (220,20,60)
|
|
||||||
LightPink = (255,182,193)
|
|
||||||
DeepSkyBlue = (0,191,255)
|
|
||||||
WIDTH,HEIGHT = 1200 , 800
|
|
||||||
WIN = pygame.display.set_mode((WIDTH,HEIGHT))
|
|
||||||
SPACE = pygame.transform.scale(pygame.image.load('images/map.png'),(WIDTH,HEIGHT))
|
|
||||||
class Button(object):
|
|
||||||
def __init__(self, text, color, x=None, y=None, **kwargs):
|
|
||||||
self.surface = font.render(text, True, color)
|
|
||||||
|
|
||||||
self.WIDTH = self.surface.get_width()
|
|
||||||
self.HEIGHT = self.surface.get_height()
|
|
||||||
|
|
||||||
if 'centered_x' in kwargs and kwargs['centered_x']:
|
|
||||||
self.x = WIDTH // 2 - self.WIDTH // 2
|
|
||||||
else:
|
|
||||||
self.x = x
|
|
||||||
|
|
||||||
if 'centered_y' in kwargs and kwargs['centered_y']:
|
|
||||||
self.y = HEIGHT //2 - self.HEIGHT // 2
|
|
||||||
else:
|
|
||||||
self.y = y
|
|
||||||
|
|
||||||
def display(self):
|
|
||||||
WIN.blit(self.surface, (self.x, self.y))
|
|
||||||
|
|
||||||
def check_click(self, position):
|
|
||||||
x_match = (position[0] > self.x) and (position[0] < self.x + self.WIDTH)
|
|
||||||
y_match = (position[1] > self.y) and (position[1] < self.y + self.HEIGHT)
|
|
||||||
if x_match and y_match:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def starting_screen():
|
|
||||||
WIN.blit(SPACE, (0, 0))
|
|
||||||
|
|
||||||
game_title = font.render('Starting Screen', True, WHITE)
|
|
||||||
|
|
||||||
WIN.blit(game_title, (WIDTH//2 - game_title.get_width()//2, 150))
|
|
||||||
|
|
||||||
play_button = Button('Single Play!', WHITE, None, 350, centered_x=True)
|
|
||||||
Oplay_button = Button('Online Play!', WHITE, None, 400, centered_x=True)
|
|
||||||
AIplay_button = Button('AI Play!', WHITE, None, 450, centered_x=True)
|
|
||||||
exit_button = Button('Exit!', WHITE, None, 500, centered_x=True)
|
|
||||||
|
|
||||||
play_button.display()
|
|
||||||
Oplay_button.display()
|
|
||||||
exit_button.display()
|
|
||||||
AIplay_button.display()
|
|
||||||
|
|
||||||
pygame.display.update()
|
|
||||||
|
|
||||||
while True:
|
|
||||||
|
|
||||||
if play_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
play_button = Button('Single Play!', RED, None, 350, centered_x=True)
|
|
||||||
else:
|
|
||||||
play_button = Button('Single Play!', WHITE, None, 350, centered_x=True)
|
|
||||||
|
|
||||||
if Oplay_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
Oplay_button = Button('Online Play!', RED, None, 400, centered_x=True)
|
|
||||||
else:
|
|
||||||
Oplay_button = Button('Online Play!', WHITE, None, 400, centered_x=True)
|
|
||||||
|
|
||||||
if AIplay_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
AIplay_button = Button('AI Play!', RED, None, 450, centered_x=True)
|
|
||||||
else:
|
|
||||||
AIplay_button = Button('AI Play!', WHITE, None, 450, centered_x=True)
|
|
||||||
|
|
||||||
if exit_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
exit_button = Button('Exit!', RED, None, 500, centered_x=True)
|
|
||||||
else:
|
|
||||||
exit_button = Button('Exit!', WHITE, None, 500, centered_x=True)
|
|
||||||
|
|
||||||
play_button.display()
|
|
||||||
Oplay_button.display()
|
|
||||||
AIplay_button.display()
|
|
||||||
exit_button.display()
|
|
||||||
pygame.display.update()
|
|
||||||
|
|
||||||
for event in pygame.event.get():
|
|
||||||
if event.type == pygame.QUIT:
|
|
||||||
pygame.quit()
|
|
||||||
raise SystemExit
|
|
||||||
if pygame.mouse.get_pressed()[0]:
|
|
||||||
if play_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
return 1
|
|
||||||
if Oplay_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
return 2
|
|
||||||
if AIplay_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
return 3
|
|
||||||
if exit_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def starting_menu():
|
|
||||||
WIN.blit(SPACE, (0, 0))
|
|
||||||
|
|
||||||
game_title = font.render('Menu', True, WHITE)
|
|
||||||
|
|
||||||
WIN.blit(game_title, (WIDTH//2 - game_title.get_width()//2, 150))
|
|
||||||
|
|
||||||
play_button = Button('Pause', WHITE, None, 350, centered_x=True)
|
|
||||||
Oplay_button = Button('Report', WHITE, None, 400, centered_x=True)
|
|
||||||
exit_button = Button('Quit', WHITE, None, 500, centered_x=True)
|
|
||||||
surrender_button = Button('Surrender', WHITE, None, 450, centered_x=True)
|
|
||||||
|
|
||||||
play_button.display()
|
|
||||||
Oplay_button.display()
|
|
||||||
exit_button.display()
|
|
||||||
surrender_button.display()
|
|
||||||
|
|
||||||
pygame.display.update()
|
|
||||||
|
|
||||||
while True:
|
|
||||||
|
|
||||||
if play_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
play_button = Button('Pause', RED, None, 350, centered_x=True)
|
|
||||||
else:
|
|
||||||
play_button = Button('Pause', WHITE, None, 350, centered_x=True)
|
|
||||||
|
|
||||||
if Oplay_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
Oplay_button = Button('Report', RED, None, 400, centered_x=True)
|
|
||||||
else:
|
|
||||||
Oplay_button = Button('Report', WHITE, None, 400, centered_x=True)
|
|
||||||
|
|
||||||
if surrender_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
surrender_button = Button('Surrender', RED, None, 450, centered_x=True)
|
|
||||||
else:
|
|
||||||
surrender_button = Button('Surrender', WHITE, None, 450, centered_x=True)
|
|
||||||
|
|
||||||
if exit_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
exit_button = Button('Quit', RED, None, 500, centered_x=True)
|
|
||||||
else:
|
|
||||||
exit_button = Button('Quit', WHITE, None, 500, centered_x=True)
|
|
||||||
|
|
||||||
play_button.display()
|
|
||||||
Oplay_button.display()
|
|
||||||
exit_button.display()
|
|
||||||
surrender_button.display()
|
|
||||||
|
|
||||||
pygame.display.update()
|
|
||||||
|
|
||||||
for event in pygame.event.get():
|
|
||||||
if event.type == pygame.QUIT:
|
|
||||||
pygame.quit()
|
|
||||||
raise SystemExit
|
|
||||||
if pygame.mouse.get_pressed()[0]:
|
|
||||||
if play_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
return 1
|
|
||||||
if Oplay_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
return 2
|
|
||||||
if surrender_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
return 3
|
|
||||||
if exit_button.check_click(pygame.mouse.get_pos()):
|
|
||||||
return 0
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
import pygame
|
|
||||||
import pygame_menu
|
|
||||||
import math
|
|
||||||
|
|
||||||
def draw_update_function(widget, menu):
|
|
||||||
t = widget.get_attribute('t', 0)
|
|
||||||
t += menu.get_clock().get_time()
|
|
||||||
widget.set_padding(10*(1 + math.sin(t))) # Oscillating padding
|
|
||||||
|
|
||||||
pygame.init()
|
|
||||||
surface = pygame.display.set_mode((600, 400))
|
|
||||||
def set_difficulty(value, difficulty):
|
|
||||||
# Do the job here !
|
|
||||||
pass
|
|
||||||
|
|
||||||
def start_the_game():
|
|
||||||
# Do the job here !
|
|
||||||
pass
|
|
||||||
|
|
||||||
menu = pygame_menu.Menu('Welcome', 400, 300,
|
|
||||||
theme=pygame_menu.themes.THEME_BLUE)
|
|
||||||
|
|
||||||
menu.add.text_input('Name :', default='John Doe')
|
|
||||||
menu.add.selector('Difficulty :', [('Hard', 1), ('Easy', 2)], onchange=set_difficulty)
|
|
||||||
menu.add.button('Play', start_the_game)
|
|
||||||
menu.add.button('Quit', pygame_menu.events.EXIT)
|
|
||||||
menu.mainloop(surface)
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
import pygame
|
|
||||||
import time
|
|
||||||
|
|
||||||
|
|
||||||
pygame.init()
|
|
||||||
black = (0, 0, 0)
|
|
||||||
white = (255, 255, 255)
|
|
||||||
display_width = 800
|
|
||||||
display_height = 600
|
|
||||||
gameDisplay = pygame.display.set_mode((display_width, display_height))
|
|
||||||
|
|
||||||
def text_objects(text, font):
|
|
||||||
textSurface = font.render(text, True, black)
|
|
||||||
return textSurface, textSurface.get_rect()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def time_ShowAndCheck(client_time):
|
|
||||||
time.sleep(1)
|
|
||||||
gameDisplay.fill(white)
|
|
||||||
count = client_time
|
|
||||||
clock = str(count)
|
|
||||||
largeText = pygame.font.SysFont('comicsansms', 25)
|
|
||||||
TextSurf, TextRect = text_objects(clock, largeText)
|
|
||||||
TextRect.center = (750, (display_height / 10))
|
|
||||||
gameDisplay.blit(TextSurf, TextRect)
|
|
||||||
pygame.display.update()
|
|
||||||
|
|
||||||
flag = 300
|
|
||||||
while flag:
|
|
||||||
time_ShowAndCheck(flag)
|
|
||||||
flag -= 1
|
|
||||||