2 Revīzijas 9532a56fa1 ... 89f3988ecf

Autors SHA1 Ziņojums Datums
  Bence DOMONKOS 89f3988ecf tmp: big refactor, part 1 1 gadu atpakaļ
  Bence DOMONKOS 9532a56fa1 tmp: big refactor, part 1 1 gadu atpakaļ
3 mainītis faili ar 20 papildinājumiem un 16 dzēšanām
  1. 10 7
      board.py
  2. 4 2
      game.py
  3. 6 7
      player.py

+ 10 - 7
board.py

@@ -11,8 +11,8 @@ class Board:
 
 	def __init__(self, nrows = 4, deck_size = 104, max_row_len = 5):
 		self.ncards = deck_size
-		#self.deck = random.shuffle(list(range(1, deck_size + 1)))
 		self.deck = list(range(1, deck_size + 1))
+		random.shuffle(self.deck)
 		print(self.deck)
 		self.rows = [[c] for c in self.draw(nrows)]
 		print(self.rows)
@@ -29,16 +29,19 @@ class Board:
 	def calc_penalty(cls, row):
 		return sum(map(Board.card_value, row))
 
-	def draw(cls, n = 1):
-		#assert len(cls.deck) < n, 'draw: not that many cards in the deck'
-		top_n = cls.deck[:n]
-		cls.deck = cls.deck[n:]
+	def draw(self, n = 1):
+		print(len(self.deck), n)
+		assert len(self.deck) >= n, 'draw: not that many cards in the deck'
+		top_n = self.deck[:n]
+		self.deck = self.deck[n:]
 		return top_n
 
 	def reset_row(self, row_ind, card):
-		#assert 0 <= row_ind > len(self.rows), 'reset_row: index is out of the range'
-		#assert 0 < card <= self.ncards, 'reset_row: invalid card'
+		assert 0 <= row_ind < len(self.rows), 'reset_row: index is out of the range'
+		assert 0 < card <= self.ncards, 'reset_row: invalid card'
+		penalty = self.calc_penalty(self.rows[row_ind])
 		self.rows[row_ind] = [card]
+		return penalty
 
 	def place_card(self, card):
 		mindiff = self.ncards

+ 4 - 2
game.py

@@ -80,8 +80,10 @@ class Game:
 		for p in players_ready:
 			ret, arg = self.board.place_card(p.card)
 			if ret == board.CANDIDATE.TOO_LOW:
-				print(p.name, p.card, 'low')
-				p.select_row()
+				selection = p.select_row(len(self.board.rows))
+				penalty = self.board.reset_row(selection, p.card)
+				p.score = p.score + penalty
+				print(p.name, p.card, 'low: ', p.score)
 			elif ret == board.CANDIDATE.PENALTY:
 				p.score = p.score + arg
 				print(p.name, p.card, 'penalty:', p.score)

+ 6 - 7
player.py

@@ -18,19 +18,18 @@ class Player:
 			return self.card
 		return None
 
-	def query_user(self,options):
+	def query_user(self, msg, options):
 		num = None
+		bmsg = bytes(msg + str(options), 'utf-8')
 		while True:
-			print('select one!')
-			print(options)
-			num = int(input())
+			self.socket.send(bmsg)
+			num = int(self.socket.recv(1024).strip())
 			if num in options:
 				break
 		return num
 
-	def select_row(self):
-		# print table
-		return self.query_user(list(range(4)))
+	def select_row(self, nrows):
+		return self.query_user('Pick up a row!', list(range(nrows)))
 
 	def __del__(self):
 		self.socket.close()