Comments (12)
- Myliłem się co do
.keys()
— w Pythonie 3 jest czas stały. Mimo to prościej bez.keys()
.
from python-mastermind-game-opengl.
- Proszę zignorować. Ma zostać
StateTest
.
from python-mastermind-game-opengl.
- requirements.txt wrzuciłem dodatkowo, bo było to wymagane w pkt 1.3. Przetestowałem projekt na Pythonie 3.6 i uruchamia się prawidłowo (pipenv run python run_project.py), poprawiłem Pipfile #2031655
- punkty 2-21 poprawione
- pkt. 22 - VBO
VAO
Wytłumaczenie VBO, VAO, EBO i shaderów
23-32 in progress, skończę resztę poprawek prawdopodobnie jutro wieczorem
from python-mastermind-game-opengl.
- pkt 25. - nie, niestety nie zadziała, na początku chciałem zrobić w taki sposób i moduł zwracał błąd.
TypeError: wrapperCall() got an unexpected keyword argument 'target'
. Dodałem drobne obejście w #91631c2. Proszę ocenić czy takie rozwiązanie jest bardziej eleganckie od poprzedniej wersji z komentarzami.
from python-mastermind-game-opengl.
- Może być, dziękuję. A co by było, gdyby ponazywać wszystkie argumenty oprócz
target
?
from python-mastermind-game-opengl.
25 - dalej jest ten sam błąd, tylko dla kolejnego nazwanego argumentu
32 - in progress
from python-mastermind-game-opengl.
@MarcinCiura
Na początku na liście są wszystkie możliwe kody.
- czy tu chodzi o listę wszystkich permutacji od 1111 do 6666?
Potem w każdej turze jedzie po tej liście, dla każdego elementu znajduje odpowiedź na bieżącą próbę człowieka i powiększa w collections.Counter liczniki odpowiadające tym odpowiedziom.
- tego kompletnie nie rozumiem, na czym ma polegać znajdywanie odpowiedzi na bieżącą próbę człowieka? Czy każdy element z listy permutacji ma mieć swój własny licznik?
Po przejechaniu listy wybiera odpowiedź z maksymalnym licznikiem, znowu przejeżdża listę, żeby ją zawęzić zgodnie ze swoją odpowiedzią i zastępuje starą listę przez nową.
- jeżeli każda odpowiedź gracza jest dodawana do licznika to aby licznik miał wartość większą niż 1 gracz musiałby kilkukrotnie wpisać ten sam kod, czy to prawda? Dodatkowo, zgodnie ze swoją odpowiedzią
- o jaką swoją odpowiedź chodzi? Czy to ma być symulacja gry z komputerem do czasu aż ktoś pierwszy zgadnie kod? Niestety kompletnie nie rozumiem treści tego zadania.
from python-mastermind-game-opengl.
- Początkowo na liście, np.
self.codes
są wszystkie możliwe kody, czyli od'1111'
do'6666'
, zgadza się (chyba że powtórzenia cyfr są sprzeczne z regułami, nie pamiętam). - Człowiek strzela np.
human_attempt = '4421'
. W pętli dla każdego kodu z listy znajdujemy odpowiedź komputera, czylireply('1111', '4421')
zwraca 'c'
(1 czarny kołek),reply('1112', '4421')
—'bb'
(2 białe kołki) itd. W przygotowanym przed pętlącode_counter = collections.Counter()
robimy zatemcode_counter['c'] += 1
,code_counter['bb'] += 1
i tak dalej aż do końca listy. - Następnie bierzemy
most_difficult_reply = code_counter.most_common(1)[0]
. Tę odpowiedź za chwilę damy człowiekowi, a tymczasem robimyself.codes = [x for x in self.codes if reply(x, human_attempt) == most_difficult_reply]
.
Jeśli dalej niejasne, proszę pisać
from python-mastermind-game-opengl.
@MarcinCiura wszystkie poprawki skończone, poprawiłem też nowe błędy z pylinta i wszystko przechodzi 10/10. Sporo zmieniła się logika odpowiedzialna za wybór klasy z regułami gry, teraz nie ma już flagi cheater True/False tylko jest stała z listą klas tutaj. Po każdym resecie jest losowana jedna z klas z tej listy (tutaj) i tworzony jest jej obiekt tutaj.
Odnośnie samego wymogu z punktu 32, to całość realizuje klasa EnhancedGameRules
from python-mastermind-game-opengl.
Dziękuję za wiadomość. Tutaj lepsze random.choice()
. I nieimportowanie funkcji z modułów.
from python-mastermind-game-opengl.
@MarcinCiura Poprawione, zamieniłem randint na random.choice i dodałem import modułu zamiast funkcji. Dziękuję za wnikliwy CR i proszę o informację czy jest jeszcze coś do poprawy, w przeciwnym wypadku proszę o informację zwrotną z oceną bo niestety gonią mnie też inne przedmioty. Przyznaję że praca nad tym projektem niesamowicie pochłonęła i dowiedziałem się sporo nowych, ciekawych rzeczy o pythonie.
from python-mastermind-game-opengl.
LGTM. Przy wystawianiu ocen będę pamiętał, że Pana projekt jest skończony (ocena: 5).
from python-mastermind-game-opengl.
Related Issues (20)
- Okno z polem tekstowym na 4 cyfry, listą odpowiedzi, przyciskiem “Sprawdź”, przyciskiem “Oszust!” oraz przyciskiem “Reset”. HOT 1
- Po rozpoczęciu gry generowana jest losowa liczba (kod) złożona z czterech cyfr od 1 do 6 włącznie (1111, 1112, 1113, …, 3455, 3456, 3461, 3462, …, 6665, 6666).
- Gracz wpisuje cztery cyfry od 1 do 6 do pola tekstowego i naciska przycisk “Sprawdź”.
- Do pola odpowiedzi dopisywana jest odpowiedź zawierająca: liczbę wpisaną przez gracza, liczbę cyfr na poprawnych pozycjach oraz liczbę cyfr występujących w kodzie, ale na złych pozycjach. HOT 1
- Jeśli gracz wpisał liczbę będącą kodem, wyświetlane jest okno z napisem “Wygrana”.
- Jeśli gracz po 12 próbach nie odgadł kodu, wyświetlane jest okno z napisem “Przegrana”. HOT 1
- Logika gry powinna być realizowana przez osobną klasę, dziedziczącą po klasie RegulyGry. Z klasy RegulyGry powinna być również wydziedziczona druga klasa, generująca niepoprawne odpowiedzi. Wybór zestawu reguł powinien być dokonywany losowo przed każdą grą.
- Jeśli gracz nacisnął przycisk “Oszust!” przy poprawnych regułach gry, program powinien wyświetlić okno z napisem “Tere fere.” oraz wylosowanym kodem. HOT 1
- Jeśli gracz nacisnął przycisk “Oszust!” przy niepoprawnych regułach gry, program powinien wyświetlić okno z napisem “Złapałeś/łaś mnie!” HOT 1
- Wyświetlenie (wypisanie w konsoli) wylosowanego kodu, wpisanie odpowiedzi z błędnymi cyframi - oczekiwana informacja o braku poprawnych trafień. HOT 1
- Wyświetlenie wylosowanego kodu, wpisanie odpowiedzi z poprawnymi cyframi w złych miejscach - oczekiwana informacja o niepoprawnym położeniu. HOT 1
- Wyświetlenie wylosowanego kodu, wpisanie odpowiedzi z dwoma poprawnymi cyframi w dobrych miejscach i dwoma poprawnymi w złych miejscach - oczekiwana informacja o dwóch trafieniach i dwóch złych pozycjach. HOT 1
- Wyświetlenie wylosowanego kodu, wpisanie poprawnej odpowiedzi - oczekiwana informacja o wygranej. HOT 1
- Wpisanie 12 razy niepoprawnego kodu - oczekiwana informacja o przegranej HOT 1
- Próba wpisania niepoprawnego kodu do pola odpowiedzi (mniej lub więcej niż 4 znaki, znaki nie będące cyframi od 1 do 6) - oczekiwane nieuznanie kodu (gracz nie traci tury). HOT 1
- Wciśnięcie przycisku “Oszust” przy poprawnych zasadach gry - oczekiwana informacja “tere fere”. HOT 1
- Wciśnięcie przycisku “Oszust” przy niepoprawnych zasadach gry - oczekiwana informacja o oszukiwaniu przez komputer. HOT 1
- Wpisanie 10 kodów, resetowanie gry, wpisanie 5 kodów - oczekiwane normalne działanie gry (czy licznik tur resetuje się po wciśnięciu “Reset”) HOT 1
- Wsparcie OpenGL HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from python-mastermind-game-opengl.