Skip to content

Commit ed82333

Browse files
committed
Merge pull request #39 from d-Rickyy-b/dev
Merge dev branch into master
2 parents edd5b93 + 8bcea79 commit ed82333

File tree

10 files changed

+183
-89
lines changed

10 files changed

+183
-89
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,5 @@ ENV/
9393
.svn
9494
.git
9595
__pycache__
96-
*.db
96+
*.db
97+
.vs

database/db_wrapper.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def __init__(self):
1717
try:
1818
self.create_database(database_path)
1919
except:
20-
print("An error has occured while creating the database!")
20+
print("An error has occurred while creating the database!")
2121

2222
self.connection = sqlite3.connect(database_path)
2323
self.connection.text_factory = lambda x: str(x, 'utf-8', "ignore")
@@ -73,6 +73,14 @@ def get_all_users(self):
7373
self.cursor.execute("SELECT rowid, * FROM users;")
7474
return self.cursor.fetchall()
7575

76+
def get_admins(self):
77+
self.cursor.execute("SELECT userID from admins;")
78+
admins = self.cursor.fetchall()
79+
admin_list = []
80+
for admin in admins:
81+
admin_list.append(admin[0])
82+
return admin_list
83+
7684
def get_lang_id(self, user_id):
7785
self.cursor.execute("SELECT languageID FROM users WHERE userID=?;", [str(user_id)])
7886
result = self.cursor.fetchone()
@@ -86,7 +94,6 @@ def add_user(self, user_id, lang_id, first_name, last_name, username):
8694
self.cursor.execute("INSERT INTO users VALUES (?, ?, ?, ?, ?, 0, 0, 0, 0);", (str(user_id), str(lang_id), str(first_name), str(last_name), str(username)))
8795
self.connection.commit()
8896
except sqlite3.IntegrityError:
89-
# print("User already exists")
9097
pass
9198

9299
def insert(self, column_name, value, user_id):

database/statistics.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ def add_game_played(user_id):
2828
def get_stats(percentage):
2929
text = ""
3030
perc = int(percentage//10+1)
31-
for x in range(perc):
31+
for _ in range(perc):
3232
text += "🏆"
33-
for x in range(10-perc):
33+
for _ in range(10-perc):
3434
text += "🔴"
3535
return text
3636

game/blackJack.py

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
import logging
33

44
from telegram.keyboardbutton import KeyboardButton
5-
from telegram.replykeyboardhide import ReplyKeyboardHide
5+
from telegram.replykeyboardremove import ReplyKeyboardRemove
66
from telegram.replykeyboardmarkup import ReplyKeyboardMarkup
77

88
from database.statistics import add_game_played, set_game_won
99
from game.cardDeck import CardDeck
1010
from game.dealer import Dealer
11+
from game.message import Message
1112
from game.player import Player
1213
from lang.language import translate
1314

@@ -23,7 +24,7 @@ class BlackJack(object):
2324
# Adds Player to the Game
2425
def add_player(self, user_id, first_name, message_id, silent=None):
2526
if not self.game_running:
26-
if self.get_index_by_user_id(user_id) == None and len(self.players) <= self.MAX_PLAYERS:
27+
if self.get_index_by_user_id(user_id) is None and len(self.players) < self.MAX_PLAYERS:
2728
self.logger.debug("Adding user '" + first_name + "' to players.")
2829
player = Player(user_id, first_name, self.deck)
2930
self.players.append(player)
@@ -33,31 +34,28 @@ def add_player(self, user_id, first_name, message_id, silent=None):
3334
# TODO When game is multiplayer then print current players?
3435
self.send_message(self.chat_id, translate("playerJoined", self.lang_id).format(first_name), message_id=message_id, game_id=self.__game_id)
3536
else:
36-
self.logger.debug("User '" + first_name + "' already in player list.")
37+
self.logger.debug("User '" + first_name + "' already in player list. Or max players reached")
3738

3839
def get_index_by_user_id(self, user_id):
39-
index = 0
40-
for user in self.players:
40+
for index, user in enumerate(self.players):
4141
if user.get_userid() == user_id:
4242
return index
43-
index += 1
4443

4544
return None
4645

4746
def get_user_by_user_id(self, user_id):
4847
for user in self.players:
4948
if user.get_userid() == user_id:
5049
return user
51-
5250
return None
5351

5452
def next_player(self):
5553
if self.game_running:
56-
if self.current_player is not None and (self.current_player + 1) < len(self.players):
54+
if self.current_player is not None and self.current_player < (len(self.players) - 1):
5755
self.logger.debug("Next Player!")
5856
self.current_player += 1
5957
self.send_message(self.chat_id, translate("overview", self.lang_id) + "\n\n" + self.get_player_overview(show_points=True) + "\n" +
60-
translate("nextPlayer", self.lang_id).format(self.players[self.current_player].first_name),
58+
translate("nextPlayer", self.lang_id).format(self.players[self.current_player].get_first_name()),
6159
message_id=self.join_message_ids[self.current_player], reply_markup=self.keyboard_running, game_id=self.__game_id)
6260

6361
self.give_player_one()
@@ -69,58 +67,62 @@ def next_player(self):
6967
# gives player one card
7068
def give_player_one(self):
7169
if self.game_running:
72-
player_index = self.current_player
73-
user = self.players[player_index]
74-
self.logger.debug("Giving player one card | chatID: " + str(self.chat_id) + " | player: " + user.first_name)
70+
user = self.players[self.current_player]
71+
self.logger.debug("Giving player one card | chatID: " + str(self.chat_id) + " | player: " + user.get_first_name())
7572

76-
if user.get_number_of_cards() == 0:
73+
if not user.has_cards():
7774
# give user 2 cards at beginning
78-
for i in range(2):
75+
for _ in range(2):
7976
card = self.deck.pick_one_card()
8077
cardvalue = self.deck.get_card_value(card)
81-
8278
user.give_card(card, cardvalue)
8379

84-
# TODO check if cardvalue = 21. If yes, mention it in the message
8580
cards_string = "\n" + user.get_cards_string() + "\n"
86-
self.send_message(self.chat_id, str(translate("yourCardsAre", self.lang_id).format(
87-
user.first_name, cards_string, str(user.cardvalue))), reply_markup=self.keyboard_running,
88-
message_id=self.join_message_ids[self.current_player], game_id=self.__game_id)
81+
if user.cardvalue == 21:
82+
got21_text = "\n\n" + user.first_name + " " + translate("got21", self.lang_id)
83+
84+
self.send_message(self.chat_id, str(translate("yourCardsAre", self.lang_id).format(
85+
user.first_name, cards_string, str(user.cardvalue))) + got21_text, reply_markup=ReplyKeyboardRemove, game_id=self.__game_id)
86+
self.next_player()
87+
else:
88+
self.send_message(self.chat_id, str(translate("yourCardsAre", self.lang_id).format(
89+
user.first_name, cards_string, str(user.cardvalue))), reply_markup=self.keyboard_running,
90+
message_id=self.join_message_ids[self.current_player], game_id=self.__game_id)
8991
else:
9092
card = self.deck.pick_one_card()
9193
cardvalue = self.deck.get_card_value(card)
94+
message = Message()
9295

9396
if user.has_ace and (user.cardvalue + cardvalue > 21):
94-
# user got an ace
95-
cardvalue = 1
97+
# user got already an ace -> soft hand
9698
user.remove_ace()
97-
self.send_message(self.chat_id, translate("softHandLater", self.lang_id), game_id=self.__game_id)
99+
message.add_text(translate("softHandLater", self.lang_id))
98100

99101
if self.game_type == self.PRIVATE_CHAT:
100-
player_drew = translate("playerDraws1", self.lang_id).format(str(self.deck.get_card_name(card)))
102+
message.add_text(translate("playerDraws1", self.lang_id).format(str(self.deck.get_card_name(card))))
101103
else:
102-
player_drew = translate("playerDrew", self.lang_id).format(user.first_name, str(self.deck.get_card_name(card)))
104+
message.add_text(translate("playerDrew", self.lang_id).format(user.first_name, str(self.deck.get_card_name(card))))
103105

104106
user.give_card(card, cardvalue)
105-
106-
player_drew += "\n" + translate("cardvalue", self.lang_id).format(str(user.cardvalue))
107+
message.add_text_nl(translate("cardvalue", self.lang_id).format(str(user.cardvalue)))
107108

108109
if user.cardvalue >= 21:
109110
if user.cardvalue > 21:
110111
if self.game_type == self.GROUP_CHAT:
111-
player_drew += "\n\n" + translate("playerBusted", self.lang_id).format(user.first_name)
112+
message.add_text("\n\n" + translate("playerBusted", self.lang_id).format(user.first_name))
112113

113114
elif user.cardvalue == 21:
114-
player_drew += "\n\n" + user.first_name + " " + translate("got21", self.lang_id)
115+
message.add_text("\n\n" + user.first_name + " " + translate("got21", self.lang_id))
115116

116-
self.send_message(self.chat_id, text=player_drew, game_id=self.__game_id)
117+
self.send_message(self.chat_id, text=message.get_text(), game_id=self.__game_id)
117118
self.next_player()
118119
else:
119-
self.send_message(self.chat_id, text=player_drew, reply_markup=self.keyboard_running, game_id=self.__game_id)
120+
self.send_message(self.chat_id, text=message.get_text(), reply_markup=self.keyboard_running, game_id=self.__game_id)
120121

121122
# Gives the dealer cards
122123
def dealers_turn(self):
123124
if self.dealer.get_number_of_cards() < 2:
125+
card = None
124126
for i in range(2):
125127
card = self.deck.pick_one_card()
126128
cardvalue = self.deck.get_card_value(card)
@@ -153,7 +155,7 @@ def dealers_turn(self):
153155
self.evaluation()
154156

155157
def start_game(self, message_id=None):
156-
if ((self.game_type == self.GROUP_CHAT or self.game_type == self.MULTIPLAYER_GAME) and len(self.players) >= 1) or self.game_type == self.PRIVATE_CHAT:
158+
if ((self.game_type == self.GROUP_CHAT or self.game_type == self.MULTIPLAYER_GAME) and len(self.players) > 1) or self.game_type == self.PRIVATE_CHAT:
157159
if not self.game_running:
158160
self.game_running = True
159161

@@ -338,5 +340,4 @@ def __init__(self, chat_id, user_id, lang_id, first_name, game_handler, message_
338340

339341
# When game is being ended / object is destructed
340342
def __del__(self):
341-
self.send_message(self.chat_id, translate("gameEnded", self.lang_id), reply_markup=ReplyKeyboardHide(), game_id=self.__game_id)
342-
pass
343+
self.send_message(self.chat_id, translate("gameEnded", self.lang_id), reply_markup=ReplyKeyboardRemove(), game_id=self.__game_id)

game/cardDeck.py

Lines changed: 0 additions & 36 deletions
This file was deleted.

game/message.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# -*- coding: utf-8 -*-
2+
3+
__author__ = 'Rico'
4+
5+
6+
class Message(object):
7+
def __init__(self, message=""):
8+
self.message = message
9+
10+
def add_text(self, text):
11+
self.message += text
12+
13+
def add_text_nl(self, text):
14+
self.message += "\n" + text
15+
16+
def get_text(self):
17+
return self.message
18+
19+
def __repr__(self):
20+
return self.message
21+
22+
def __str__(self):
23+
return self.message

game/player.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ def has21(self):
2525
def has_busted(self):
2626
return self.cardvalue > 21
2727

28+
def has_cards(self):
29+
return len(self.cards) > 0
30+
2831
def get_cards_string(self):
2932
cards_string = ""
3033
for i, card in enumerate(self.cards):

gamehandler.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ def gl_create(self):
1414

1515
def gl_remove(self, chat_id):
1616
index = self.get_index_by_chatid(chat_id)
17+
if index is None:
18+
return
1719
if not index < 0:
1820
self.GameList.pop(index)
1921

@@ -50,11 +52,11 @@ def get_game_by_id(self, game_id):
5052
return None
5153

5254
def generate_id(self):
53-
game_id = ''.join(random.choice(string.digits + string.ascii_letters) for i in range(8))
55+
game_id = ''.join(random.choice(string.digits + string.ascii_letters) for _ in range(8))
5456

5557
while self.id_already_existing(game_id):
5658
print("ID already existing: " + str(game_id))
57-
game_id = ''.join(random.choice(string.digits + string.ascii_letters) for i in range(8))
59+
game_id = ''.join(random.choice(string.digits + string.ascii_letters) for _ in range(8))
5860

5961
return game_id
6062

0 commit comments

Comments
 (0)