From 694062420d06c1eee19391d6712b8b64bc0e4846 Mon Sep 17 00:00:00 2001 From: engertda83421 Date: Fri, 26 May 2023 19:55:32 +0200 Subject: [PATCH 1/3] shuffle answeroptions and show final results desc --- .../CameraDetection/CameraDetection.py | 1 - src_folder/BackEnd/game.py | 36 ++++++++++++++----- src_folder/BackEnd/router.py | 16 +++++++-- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src_folder/BackEnd/CameraDetection/CameraDetection.py b/src_folder/BackEnd/CameraDetection/CameraDetection.py index c1583db..89e3b9e 100644 --- a/src_folder/BackEnd/CameraDetection/CameraDetection.py +++ b/src_folder/BackEnd/CameraDetection/CameraDetection.py @@ -103,7 +103,6 @@ if __name__ == "__main__": # Fehlerbehandlung, wenn kein Bild gelesen werden kann if not ret: break - # Farben erkennen farben_img, ergebnisse, count_red, count_green, count_blue = erkennung_farben(frame) diff --git a/src_folder/BackEnd/game.py b/src_folder/BackEnd/game.py index 8081618..03a66c9 100644 --- a/src_folder/BackEnd/game.py +++ b/src_folder/BackEnd/game.py @@ -1,19 +1,21 @@ from Database.database import QuestionDataBase import random - +import re class Game: def __init__(self, teamsize=0, correct_field=0): self.teamsize = teamsize self.scoreboard = {'score_red': 0, - 'score_blue': 0, - 'score_green': 0} + 'score_green': 0, + 'score_blue': 0 + } self.questions = QuestionDataBase('src_folder/BackEnd/Database/EinsZweiOderDrei.db') self.available_questions = list(range(1, self.questions.num_rows())) self.field = correct_field self.question = {} + self.final_score = {} def set_teamsize(self, teamsize: int): self.teamsize = teamsize @@ -27,22 +29,36 @@ class Game: def set_scoreboard(self, current_scores: dict): self.scoreboard = self.add_score(current_scores) return self.scoreboard - + def reset_game(self): - self.__init__() + self.scoreboard = {'score_red': 0, + 'score_green': 0, + 'score_blue': 0 + } - def get_question(self) -> dict: + def get_question(self): questions = self.questions.cursor.execute("Select * from Questions") field_names = [i[0] for i in questions.description] questions_data = questions.fetchall() random_question_number = random.choice(self.available_questions) self.available_questions.remove(random_question_number) - question= list(questions_data[random_question_number]) self.question = dict(zip(field_names, question)) + self.shuffle_answeroptions() self.add_correct_field() - return self.question + + def shuffle_answeroptions(self): + answeroptions = ['Answeroption_1', 'Answeroption_2', 'Answeroption_3'] + keys = [] + print(self.question) + + for answer in answeroptions: + keys.append(self.question[answer]) + random.shuffle(keys) + + for index, answer in enumerate(answeroptions): + self.question[answer] = keys[index] def add_correct_field(self): answeroption = ['Answeroption_1', 'Answeroption_2', 'Answeroption_3', 'Correct_answeroption'] @@ -56,4 +72,8 @@ class Game: def set_correct_field(self, correct_field: int): self.field = correct_field + def final_result(self): + self.final_score = dict(sorted(self.scoreboard.items(), key=lambda x: x[1], reverse=True)) + + diff --git a/src_folder/BackEnd/router.py b/src_folder/BackEnd/router.py index 7643652..f5f5aa6 100644 --- a/src_folder/BackEnd/router.py +++ b/src_folder/BackEnd/router.py @@ -8,17 +8,21 @@ my_game = Game() @app.route('/question', methods=['GET']) def get_question(): my_game.get_question() + print(my_game.question) return jsonify(my_game.question) @app.route('/teamsize', methods=['POST']) def teamsize(): team_size = request.json my_game.set_teamsize(team_size.get('teamsize')) + print(f'Teamsize: {my_game.teamsize}\n') return Response(status=200) @app.route('/scoreboard', methods=['GET']) def scoreboard(): - return my_game.scoreboard, Response(status=200) + my_game.set_scoreboard() + print(my_game.scoreboard) + return jsonify(my_game.scoreboard) @app.route('/check', methods=['GET']) def check(): @@ -35,15 +39,21 @@ def get_scores(): my_game.add_score(scores) return Response(status=200) +@app.route('/winner', methods=['GET']) +def set_winner(): + my_game.final_result() + return jsonify(my_game.final_score) + def main(): - ## ASUS Router + ## Router # app.run(host='192.168.50.79', port=5555, debug=True) ## Postman - app.run(host='127.0.0.1', port=5555, debug=True) + app.run(host='127.0.0.1', port=5555, debug=True) if __name__ == '__main__': main() + From e8e368cad70bb8490b070f6975e03d6276e53789 Mon Sep 17 00:00:00 2001 From: engertda83421 Date: Fri, 26 May 2023 19:57:31 +0200 Subject: [PATCH 2/3] delete unused files --- src_folder/BackEnd/detect.py | 0 src_folder/BackEnd/test_flask_server.py | 15 --------------- 2 files changed, 15 deletions(-) delete mode 100644 src_folder/BackEnd/detect.py delete mode 100644 src_folder/BackEnd/test_flask_server.py diff --git a/src_folder/BackEnd/detect.py b/src_folder/BackEnd/detect.py deleted file mode 100644 index e69de29..0000000 diff --git a/src_folder/BackEnd/test_flask_server.py b/src_folder/BackEnd/test_flask_server.py deleted file mode 100644 index 5d2d9d9..0000000 --- a/src_folder/BackEnd/test_flask_server.py +++ /dev/null @@ -1,15 +0,0 @@ -from flask import Flask, jsonify, Response -app = Flask(__name__) - - -@app.route('/CONNECTION', methods=['GET']) -def connection(): - return Response(status=200) - - -def main(): - app.run(host='127.0.0.1', port=5555, debug=True) - - -if __name__ == '__main__': - main() \ No newline at end of file From 2462c7474f630bdb81df42d79eb9d5f6da812d27 Mon Sep 17 00:00:00 2001 From: engertda83421 Date: Fri, 26 May 2023 20:42:28 +0200 Subject: [PATCH 3/3] Add detected colors in correct field to scoreboard --- .../BackEnd/CameraDetection/CameraDetection.py | 17 +++++++++++++++++ src_folder/BackEnd/game.py | 1 - 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src_folder/BackEnd/CameraDetection/CameraDetection.py b/src_folder/BackEnd/CameraDetection/CameraDetection.py index 89e3b9e..d502cb9 100644 --- a/src_folder/BackEnd/CameraDetection/CameraDetection.py +++ b/src_folder/BackEnd/CameraDetection/CameraDetection.py @@ -1,5 +1,6 @@ import cv2 import numpy as np +from game import Game # from Track import nothing # Farbwerte für die Erkennung (Beispiel: Rot, Grün, Blau) colors = [(0, 0, 255), (0, 255, 0), (255, 0, 0)] @@ -15,6 +16,12 @@ upper_green = np.array([70, 255, 255]) lower_blue = np.array([90, 100, 100]) upper_blue = np.array([130, 255, 255]) + +CURRENT_SCORES= {'score_red': 0, + 'score_green': 0, + 'score_blue': 0 + } + # Funktion zur Farberkennung def erkennung_farben(img): hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) @@ -91,6 +98,13 @@ def ermittle_position(results, img_width): return positions +def count_colors(red: int, green: int, blue: int) -> None: + currrent_scores = {'score_red': red, + 'score_green': green, + 'score_blue': blue + } + Game.set_scoreboard(currrent_scores) + # Hauptprogramm if __name__ == "__main__": # Videoquelle öffnen (kann auch eine Bilddatei sein) @@ -106,6 +120,9 @@ if __name__ == "__main__": # Farben erkennen farben_img, ergebnisse, count_red, count_green, count_blue = erkennung_farben(frame) + # Add counted colours to the scoreboard in the correct field + count_colors(count_red, count_green, count_blue) + # Anzahl der Farben anzeigen cv2.putText(farben_img, f"Rot: {count_red}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, colors[0], 2) cv2.putText(farben_img, f"Gruen: {count_green}", (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 1, colors[1], 2) diff --git a/src_folder/BackEnd/game.py b/src_folder/BackEnd/game.py index 03a66c9..49b0de1 100644 --- a/src_folder/BackEnd/game.py +++ b/src_folder/BackEnd/game.py @@ -1,6 +1,5 @@ from Database.database import QuestionDataBase import random -import re class Game: