ARRgh!!!^^ Momorie Kartenverteilung
Übersicht

![]() |
Pingu_KillerBetreff: ARRgh!!!^^ Momorie Kartenverteilung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Argh! Ich habe vor einen Monat ja an einem momorie spiel geproggt welches meine Mudda für ihren Prof braucht. Ich habe bis jetzt ja nur das Gröbste:
Es werden die karten gezeichnet und wenn man auf eine klickt wird eine zufällig ausgewählte Karte aufgedeckt welche aber erst mal immer die gleiche ist. Mehr habe ich noch nicht. Ich weis, es ist nicht sehr kreativ immer zu fragen, anstatt sich selber ranzusetzen, aber mir fällt nicht ein wie ich weiter komme. Könnt ihr mir helfen? Es ist dringend, muss am 15. August fertig sein... Falls es hilft, der Code: [AUSKLAPPEN] Graphics 1024, 768, 0, 1 SetBuffer BackBuffer() AppTitle "Memorie" HidePointer SeedRnd MilliSecs() ;laden der kartenimages Global karte = LoadImage(Rand(1,5)+".bmp") Global courser = LoadImage("courser.bmp") MaskImage courser, 255, 0, 255 Global backside = LoadImage("backside.bmp") ;dimensionierung des spielfeld-feldes für die karten. Dim karten (10) Dim spielfeld (5,3) Restore feld For y = 0 To 2 For x = 0 To 4 Read spielfeld(x,y) ;daten werden ausgelesen Next Next ;hauptschleife ;------------------------------------- Repeat Cls draw_spielfeld() DrawImage courser, MouseX(), MouseY(); courser eben^^ Flip Until KeyHit(1) End ;------------------------------------- Function draw_spielfeld() mh=MouseHit(1) For y= 0 To 2 For x= 0 To 4 If spielfeld(x,y) = 1 Then ;wenn die variable 1 ist DrawImage backside, x*195+40, y*245+40;wird die kartenrückseite gezeichnet EndIf If spielfeld(x,y) = 2 Then ;wenn die variable 2 ist DrawImage karte, x*195+40, y*245+40;wird die zufallskarte gezeichnet EndIf If ImagesOverlap (courser, MouseX(), MouseY(), backside, x*195+40, y*245+40) And mh And spielfeld(x,y) = 1 Then; wenn der courser mit dem bild kollidiert die varible 1 ist und man klickt spielfeld(x,y) = 2 ElseIf ImagesOverlap (courser, MouseX(), MouseY(), backside, x*195+40, y*245+40) And mh And spielfeld(x,y) = 2 Then spielfeld(x,y) = 1 EndIf Next Next End Function ;----------------------------------- ;ich wusste nicht wie ich es anders machen sollte deshalb habe ich das feld so gezeichnet .feld Data 1,1,1,1,1 Data 1,1,1,1,1 Data 1,1,1,1,1 |
||
------------------------------------------------------
Gründer und einziges Mitglied von "NoobTec Games" |
![]() |
Nooby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global karte = LoadImage(Rand(1,5)+".bmp")
Hm... das willst du doch hoffentlich nicht so lassen oder? Also irgendwann sollte da stehen: Code: [AUSKLAPPEN] Dim Kartenbild(10)
For kartennummer = 0 to 10 ;Bei 11 verschiedenen Kartenpaaren Global kartenbild(kartennummer) = LoadImage("karte" + kartennummer + ".bmp") Next BMP ist vielleicht nicht so schön... Über Variablennamen kann man streiten - so würde ich das machen. Code: [AUSKLAPPEN] Dim karten (10)
Wenn das die Kartenbilder sind, dann sind es 11 verschiedene. Warum dann Code: [AUSKLAPPEN] Dim spielfeld (5,3)
? Das macht 6 * 4, also 24 Felder... Zwei sind nicht belegt. Also lieber Code: [AUSKLAPPEN] Dim karten (11)
oder? Merke: Auch bei "Dim" wird die 0 mitgerechnet! Das ist das, was mir bisher aufgefallen ist... Mir ist der Code - auch mit Kommentaren - ein bisschen zu unübersichtlich. |
||
DAS PERPETUOMOBILE!!!
http://www.sax.de/~stalker/pad/199801/ |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
15 Karten ist irgendwie zu ungerade für ein Memory. ![]() Um die Karten zu mischen, lese es erst ein, wie du es bereits gemacht hast. Dann lass eine Schleife ca. 100 mal laufen, in der du zwei zufällig ausgewählte Karten vertauschst. Danach sollte das Feld gemischt sein. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
Nooby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder du verwendest einen komplizierteren Code mit "Type", in dem du jeder Karte ein zufälliges Element aus Type zuweist und dieses dann löschst. So isses "ordentlicher".
@SpionAtom: JUHU! Bilderrätzel!!! |
||
DAS PERPETUOMOBILE!!!
http://www.sax.de/~stalker/pad/199801/ |
![]() |
Pingu_Killer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erst mal danke für die schnellen antworten ![]() Mhm... Verdammt ![]() ich verstehe bei euch beide nicht wie ihr das meint.... Könnt ihr mir das vllt erklären? ![]() |
||
------------------------------------------------------
Gründer und einziges Mitglied von "NoobTec Games" |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich meine das ungefähr so:
Code: [AUSKLAPPEN] Restore feld
For y = 0 To 2 For x = 0 To 4 Read spielfeld(x,y) ;daten werden ausgelesen Next Next ;Mischen: For i = 1 To 100 x1 = Rand(0, 4): y1 = Rand(0, 2) x2 = Rand(0, 4): y2 = Rand(0, 2) tmp = spielfeld(x1, y1) ;Tauschvorgang spielfeld(x1, y1) = spielfeld(x2, y2) spielfeld(x2, y2) = tmp Next Je größer du die Schleife machst, desto mehr Vertauschungen gibt es, desto gemischter wird das Feld. @Nooby cool, ne? |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
Pingu_Killer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt muss ich mal nachhaken ![]() was beudeutet eigendlich der Doppelpunkt? Code: [AUSKLAPPEN] x1 = Rand(0, 4): y1 = Rand(0, 2)
x2 = Rand(0, 4): y2 = Rand(0, 2) |
||
------------------------------------------------------
Gründer und einziges Mitglied von "NoobTec Games" |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
doppelpunkt bedeutet: jetzt fängt ein neuer befehl an.
a=1 : b=1 ist dasselbe wie a=1 b=1 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group