Der erste Klick bei Minesweeper
Geizhals » Forum » Games » Der erste Klick bei Minesweeper (148 Beiträge, 5376 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Der erste Klick bei Minesweeper
19.05.2010, 21:08:42
Bissl nerdig meine Frage... aber wenn schon, dann auch auf halbem Wege.

Habe gerade eine Auseinandersetzung mit meinem Mitbewohner gehabt, ob man bei Minesweeper mit dem ersten Klick eine Mine treffen kann. Meine Meinung ist, dass die Verteilung der Minen erst nach dem ersten Klick berechnet wird. Er ist sich ganz sicher, dass er schon einmal beim ersten Klick eine getroffen hat.

Also hab ich ihn erstmal auf eine Wahrscheinlichkeit festlegen wollen. Er sagte von 100 ersten Klicks auf der Anfängerkarte sind 4-5 Minen. Ich hab ihm die hundert Klicks gemacht. Keine Mine darunter. Das hat ihn nicht überzeugt. Ich müsse das mehrmals wiederholen, um meine These zu verifizieren. Ich hab aber meinen Popper gelesen und weiß, dass das nicht geht und betrachte also meine Hypothese als bewährt an, bis er sie falsifiziert. Da ist er wieder zu faul für. Wir sind uns also uneinig darüber, wer in der Begründungspflicht steht.

Ich hab bissl gegoogelt zu dem Thema aber nichts gefunden. Nur ein paar Foren, wo sich die Leute auch nicht einig waren und mathematische Artikel über irgendein NP-Problem oder so. Jetzt frag ich mal euch.

Und JA, ich hab auch besseres zu tun. Aber was soll man machen, Rechthaberei ist halt auch ein Hobby. Deswegen will ich die Thematik ja auch schnell klären und dann wieder was anderes machen. :)

lg euer Rüdi

Edit: Darauf gekommen sind wir übrigens weil in diesem recht amüsanten Filmchen folgender Satz fällt: "Calm down, it's never the first one."

19.05.2010, 21:19 Uhr - Editiert von ruediger.h, alte Version: hier
Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
.
Re: Der erste Klick bei Minesweeper
25.05.2010, 10:51:02
wennst code lesen kannst:

010036A7  MOV DWORD PTR DS:[1005334],EAX    ; [0x1005334] = Width

010036AC  MOV DWORD PTR DS:[1005338],ECX    ; [0x1005338] = Height

010036B2  CALL winmine.01002ED5  ; Generate empty block of memory and clears it

010036B7  MOV EAX,DWORD PTR DS:[10056A4]
010036BC  MOV DWORD PTR DS:[1005160],EDI
010036C2  MOV DWORD PTR DS:[1005330],EAX    ; [0x1005330] = number of mines

                    ; loop over the number of mines

010036C7  PUSH DWORD PTR DS:[1005334] ; push Max Width into the stack

010036CD  CALL winmine.01003940       ; Mine_Width  = randomize x position (0 .. max width-1)

010036D2  PUSH DWORD PTR DS:[1005338] ; push Max Height into the stack

010036D8  MOV ESI,EAX
010036DA  INC ESI                ; Mine_Width = Mine_Width + 1

010036DB  CALL winmine.01003940  ; Mine_Height = randomize y position

                                 ; (0 .. max height-1)

010036E0  INC EAX                ; Mine_Height = Mine_Height +1

010036E1  MOV ECX,EAX            ; calculate the address of the cell in the memory block

                                 ; (the map)

010036E3  SHL ECX,5              ; the calculation goes:

                                 ; cell_memory_address = 0x1005340 + 32 * height + width

010036E6  TEST BYTE PTR DS:[ECX+ESI+1005340],80 ; [cell_memory_address] == is already mine?

010036EE  JNZ SHORT winmine.010036C7   ; if already mine start over this iteration

010036F0  SHL EAX,5                    ; otherwise, set this cell as mine

010036F3  LEA EAX,DWORD PTR DS:[EAX+ESI+1005340]
010036FA  OR BYTE PTR DS:[EAX],80
010036FD  DEC DWORD PTR DS:[1005330]        
01003703  JNZ SHORT winmine.010036C7   ; go to next iteration


lg
moby

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung