Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Verbesserungsvorschläge am Quelltext - Danke

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 06.10.2006, 17:12    Titel: Verbesserungsvorschläge am Quelltext - Danke Antworten mit Zitat

Ich hab jetzt TIC TAC TOE fertig programmiert, doch leider gibt es kleinere Fehler wenn man in ein Feld klickt kommt abundzu Kreis aber auch ab und zu X. Normalerweise sollte es halt immer abwechselnd sein.

Könnt ihr vll. bei euch mal nachschauen. Danke

mfg Manu

hier der code:
Code:

CLS

CALL xscreen(&H101)
CALL set.picture(100, 100, "feld.BMP")



CALL xmouse("ON", 0, 0, 0)

start:

DO
CALL xmouse("CTRL", t%, x%, y%)

LOOP UNTIL t% = 1



IF x% >= 130 AND x% <= 235 AND y% >= 130 AND y% <= 221 THEN  'linksoben
CALL set.picture(150, 145, "kreis.BMP")
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 131 AND y% <= 222 THEN 'mitteoben
CALL set.picture(270, 145, "kreis.BMP")
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 131 AND y% <= 222 THEN ' rechtsoben
CALL set.picture(390, 145, "kreis.BMP")
END IF

IF x% >= 130 AND x% <= 235 AND y% >= 222 AND y% <= 314 THEN  'mittelinks
CALL set.picture(150, 235, "kreis.BMP")
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 222 AND y% <= 314 THEN  'mittemitte
CALL set.picture(268, 235, "kreis.BMP")
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 222 AND y% <= 314 THEN   'rechtsmitte
CALL set.picture(390, 235, "kreis.BMP")
END IF

IF x% >= 130 AND x% <= 235 AND y% >= 314 AND y% <= 432 THEN    'linksunten
CALL set.picture(150, 346, "kreis.BMP")
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 314 AND y% <= 432 THEN 'mitteunten
CALL set.picture(268, 346, "kreis.BMP")
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 314 AND y% <= 432 THEN  'rechtsunten
CALL set.picture(390, 346, "kreis.BMP")
END IF

'Spieler 2


DO
CALL xmouse("CTRL", t%, x%, y%)



LOOP UNTIL t% = 1




IF x% >= 130 AND x% <= 235 AND y% >= 130 AND y% <= 221 THEN  'linksoben
CALL set.picture(150, 145, "kreis2.BMP")
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 131 AND y% <= 222 THEN 'mitteoben
CALL set.picture(270, 145, "kreis2.BMP")
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 131 AND y% <= 222 THEN ' rechtsoben
CALL set.picture(390, 145, "kreis2.BMP")
END IF

IF x% >= 130 AND x% <= 235 AND y% >= 222 AND y% <= 314 THEN  'mittelinks
CALL set.picture(150, 235, "kreis2.BMP")
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 222 AND y% <= 314 THEN  'mittemitte
CALL set.picture(268, 235, "kreis2.BMP")
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 222 AND y% <= 314 THEN   'rechtsmitte
CALL set.picture(390, 235, "kreis2.BMP")
END IF

IF x% >= 130 AND x% <= 235 AND y% >= 314 AND y% <= 432 THEN    'linksunten
CALL set.picture(150, 346, "kreis2.BMP")
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 314 AND y% <= 432 THEN 'mitteunten
CALL set.picture(268, 346, "kreis2.BMP")
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 314 AND y% <= 432 THEN  'rechtsunten
CALL set.picture(390, 346, "kreis2.BMP")
END IF



























'PRINT t%
'PRINT x%
'PRINT y%
GOTO start:

SLEEP

end



hier die .exe

http://www.file-upload.net/download_06.10.06_cza4db.zip.html

Achtung!!!!!!!!
das Programm lässt sich nicht von selber beenden, es muss über rechtsklick schließen oder über den Taskmanager beendet werden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 06.10.2006, 17:29    Titel: Re: Verbesserungsvorschläge am Quelltext - Danke Antworten mit Zitat

Sollte klappen:

Code:
CLS

CALL xscreen(&H101)
CALL set.picture(100, 100, "feld.BMP")



CALL xmouse("ON", 0, 0, 0)

spieler%=0
Do 'hauptschleife

If spieler%<>1 Then spieler%=1 Elseif spieler%=1 Then spieler%=0
DO
    CALL xmouse("CTRL", t%, x%, y%)
     If t%=2 Then End
LOOP UNTIL t% = 1
If spieler%=1 Then bild="kreis.BMP" else bild$="kreis2.BMP"


IF x% >= 130 AND x% <= 235 AND y% >= 130 AND y% <= 221 THEN  'linksoben
CALL set.picture(150, 145, bild$)
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 131 AND y% <= 222 THEN 'mitteoben
CALL set.picture(270, 145, bild$)
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 131 AND y% <= 222 THEN ' rechtsoben
CALL set.picture(390, 145, bild$)
END IF

IF x% >= 130 AND x% <= 235 AND y% >= 222 AND y% <= 314 THEN  'mittelinks
CALL set.picture(150, 235, bild$)
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 222 AND y% <= 314 THEN  'mittemitte
CALL set.picture(268, 235, bild$)
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 222 AND y% <= 314 THEN   'rechtsmitte
CALL set.picture(390, 235, bild$)
END IF

IF x% >= 130 AND x% <= 235 AND y% >= 314 AND y% <= 432 THEN    'linksunten
CALL set.picture(150, 346, bild$)
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 314 AND y% <= 432 THEN 'mitteunten
CALL set.picture(268, 346, bild$)
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 314 AND y% <= 432 THEN  'rechtsunten
CALL set.picture(390, 346, bild$)
END IF

DO
    CALL xmouse("CTRL", t%, x%, y%)
    If t%=2 Then End
LOOP UNTIL t% = 0        'so lange laufen bis die maustaste nicht mehr gedrückt ist
Loop

SLEEP

end

_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 06.10.2006, 18:25    Titel: Antworten mit Zitat

Hab auch mal sowas gemacht, allerdings ohne Lib...

Code:
DECLARE SUB Kreis (x%, y%)
DECLARE SUB Ixx (x%, y%)
1 CLS : SCREEN 13  'von Thomas Decker (10.3.2001)
LOCATE 2, 13: PRINT "TIC - TAC - TOE"
LINE (0, 0)-(319, 24), 15, B
LINE (0, 26)-(319, 199), 15, B


DIM Feldi%(1 TO 3, 1 TO 3)
MalFeld$ = "BM160,100 BM-27,-27 U25E5R5F5D25R25U25E5R5F5D25 R25F5D5G5L25D25R25F5D5G5L25 D25G5L5H5U25L25D25G5L5H5U25 L25H5U5E5R25U25L25H5U5E5R25 BM+15,15 R25D25L25U25"
FG% = 39: s% = 18

FOR i% = 0 TO 360 STEP 20
Winkel$ = "TA" + LTRIM$(STR$(i%))
 DRAW "C15" + Winkel$ + MalFeld$
 SZ! = TIMER: DO WHILE SZ! + .001 > TIMER: LOOP
 DRAW "C0" + Winkel$ + MalFeld$
NEXT i%
DRAW "C15" + Winkel$ + MalFeld$
LOCATE 22, 2: PRINT "Dr?cken Sie [ENTER] um fortzufahren"
DO: a$ = INKEY$
IF a$ = CHR$(13) THEN EXIT DO
IF a$ = CHR$(27) THEN PRINT "Ende...": END
LOOP
LOCATE 22, 2: PRINT "Spielen Sie nun dieses tolle Spiel!"
DRAW "C15" + Winkel$ + MalFeld$ + "BM-5,-5 P9,15"
COLOR 4: LOCATE 5, 2: PRINT "Spieler 1"
COLOR 1: LOCATE 5, 30: PRINT "Spieler 2"
Kreis 40, 50
Ixx 270, 50

dran1% = 1
dran2% = 2
P1% = 1
P2% = 1
zuege% = 0
       
        DO
          dran% = dran1%
          IF dran1% = 1 THEN COLOR 7: LOCATE 10, 2: PRINT "ist am Zug": COLOR 0: LOCATE 10, 30: PRINT "ist am Zug"
          IF dran2% = 1 THEN COLOR 7: LOCATE 10, 30: PRINT "ist am Zug": COLOR 0: LOCATE 10, 2: PRINT "ist am Zug"

          DO: a$ = INKEY$
           IF a$ <> "" THEN
            LINE (102 + P1% * FG% - FG% + 10, 42 + P2% * FG% - FG% + 10)-(102 + P1% * FG% - 10, 42 + P2% * FG% - 10), 0, BF
            IF Feldi%(P1%, P2%) = 1 THEN Kreis 102 + P1% * FG% - FG% + s%, 42 + P2% * FG% - FG% + s%
            IF Feldi%(P1%, P2%) = 2 THEN Ixx 102 + P1% * FG% - FG% + s%, 42 + P2% * FG% - FG% + s%
           END IF

           SELECT CASE a$
            CASE CHR$(0) + "H": P2% = P2% - 1: IF P2% < 1 THEN P2% = 1
            CASE CHR$(0) + "P": P2% = P2% + 1: IF P2% > 3 THEN P2% = 3
            CASE CHR$(0) + "K": P1% = P1% - 1: IF P1% < 1 THEN P1% = 1
            CASE CHR$(0) + "M": P1% = P1% + 1: IF P1% > 3 THEN P1% = 3
            CASE CHR$(13)
             IF Feldi%(P1%, P2%) = 0 THEN
              IF dran% = 1 THEN Feldi%(P1%, P2%) = 1
              IF dran% = 2 THEN Feldi%(P1%, P2%) = 2
               IF Feldi%(P1%, P2%) = 1 THEN Kreis 102 + P1% * FG% - FG% + s%, 42 + P2% * FG% - FG% + s%
               IF Feldi%(P1%, P2%) = 2 THEN Ixx 102 + P1% * FG% - FG% + s%, 42 + P2% * FG% - FG% + s%
               zuege% = zuege% + 1
              EXIT DO
             ELSE
              PLAY "O1L64CDEF"
             END IF
            CASE CHR$(27): PRINT "Ende...": END
            CASE ELSE
           END SELECT

           LINE (102 + P1% * FG% - FG% + 10, 42 + P2% * FG% - FG% + 10)-(102 + P1% * FG% - 10, 42 + P2% * FG% - 10), 2, B
          LOOP

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       'KONTROLLE
drei% = 0
DIM F%(1 TO 3, 1 TO 3)
FOR i% = 1 TO 3: FOR j% = 1 TO 3: F%(i%, j%) = Feldi%(i%, j%): NEXT j%: NEXT i%

IF F%(1, 1) = F%(1, 2) AND F%(1, 2) = F%(1, 3) THEN drei% = F%(1, 1)
IF F%(2, 1) = F%(2, 2) AND F%(2, 2) = F%(2, 3) THEN drei% = F%(2, 1)
IF F%(3, 1) = F%(3, 2) AND F%(3, 2) = F%(3, 3) THEN drei% = F%(3, 1)

IF F%(1, 1) = F%(2, 1) AND F%(2, 1) = F%(3, 1) THEN drei% = F%(1, 1)
IF F%(1, 2) = F%(2, 2) AND F%(2, 2) = F%(3, 2) THEN drei% = F%(1, 2)
IF F%(1, 3) = F%(2, 3) AND F%(2, 3) = F%(3, 3) THEN drei% = F%(1, 3)

IF F%(1, 1) = F%(2, 2) AND F%(2, 2) = F%(3, 3) THEN drei% = F%(1, 1)
IF F%(1, 3) = F%(2, 2) AND F%(2, 2) = F%(3, 1) THEN drei% = F%(1, 3)

IF drei% > 0 THEN
 ERASE Feldi%, F%
 COLOR 14
 LOCATE 10, 15: PRINT "S P I E L E R "
 LOCATE 11, 20: PRINT drei%
 LOCATE 12, 15: PRINT "G e w i n n t"
 COLOR 7
 LOCATE 23, 1: PRINT "Enter f?r Nochmal, sonst Esc"
 DO: a$ = INKEY$
  IF a$ = CHR$(13) THEN GOTO 1
  IF a$ = CHR$(27) THEN END
 LOOP
END IF

IF zuege% = 9 THEN
 ERASE Feldi%, F%
 COLOR 14
 LOCATE 10, 15: PRINT " K E I N E R  "
 LOCATE 11, 20: PRINT ""
 LOCATE 12, 15: PRINT "G e w i n n t"
 ERASE Feldi%, F%
 COLOR 7
 LOCATE 23, 1: PRINT "Enter f?r Nochmal, sonst Esc"
 DO: a$ = INKEY$
  IF a$ = CHR$(13) THEN GOTO 1
  IF a$ = CHR$(27) THEN END
 LOOP
END IF

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        SWAP dran1%, dran2%
        LOOP
SLEEP

SUB Ixx (x%, y%)

MalX$ = "E5F5G5F5G5H5G5H5E5H5E5F5 BD2 P1,15"
PSET (x%, y% - 5), 15
DRAW MalX$

END SUB

SUB Kreis (x%, y%)

CIRCLE (x%, y%), 12, 15: PAINT STEP(0, 0), 4, 15
CIRCLE (x%, y%), 6, 15: PAINT STEP(0, 0), 0, 15

END SUB

_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 07.10.2006, 10:45    Titel: Re: Verbesserungsvorschläge am Quelltext - Danke Antworten mit Zitat

programmierer hat Folgendes geschrieben:
Sollte klappen:

Code:
CLS

CALL xscreen(&H101)
CALL set.picture(100, 100, "feld.BMP")



CALL xmouse("ON", 0, 0, 0)

spieler%=0
Do 'hauptschleife

If spieler%<>1 Then spieler%=1 Elseif spieler%=1 Then spieler%=0
DO
    CALL xmouse("CTRL", t%, x%, y%)
     If t%=2 Then End
LOOP UNTIL t% = 1
If spieler%=1 Then bild="kreis.BMP" else bild$="kreis2.BMP"


IF x% >= 130 AND x% <= 235 AND y% >= 130 AND y% <= 221 THEN  'linksoben
CALL set.picture(150, 145, bild$)
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 131 AND y% <= 222 THEN 'mitteoben
CALL set.picture(270, 145, bild$)
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 131 AND y% <= 222 THEN ' rechtsoben
CALL set.picture(390, 145, bild$)
END IF

IF x% >= 130 AND x% <= 235 AND y% >= 222 AND y% <= 314 THEN  'mittelinks
CALL set.picture(150, 235, bild$)
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 222 AND y% <= 314 THEN  'mittemitte
CALL set.picture(268, 235, bild$)
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 222 AND y% <= 314 THEN   'rechtsmitte
CALL set.picture(390, 235, bild$)
END IF

IF x% >= 130 AND x% <= 235 AND y% >= 314 AND y% <= 432 THEN    'linksunten
CALL set.picture(150, 346, bild$)
END IF

IF x% >= 236 AND x% <= 364 AND y% >= 314 AND y% <= 432 THEN 'mitteunten
CALL set.picture(268, 346, bild$)
END IF

IF x% >= 364 AND x% <= 494 AND y% >= 314 AND y% <= 432 THEN  'rechtsunten
CALL set.picture(390, 346, bild$)
END IF

DO
    CALL xmouse("CTRL", t%, x%, y%)
    If t%=2 Then End
LOOP UNTIL t% = 0        'so lange laufen bis die maustaste nicht mehr gedrückt ist
Loop

SLEEP

end




danke programmierer

aber immer wenn ich auf ein feld drücke kommt immer kreis2.BMP

kannst du mir da vielleicht helfen

danke

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 07.10.2006, 10:54    Titel: Antworten mit Zitat

@spion atom

super prog


bloß wie hast du die schirft so groß gemacht?

danke

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 07.10.2006, 11:49    Titel: Antworten mit Zitat

Guck mal hier!

Sollte gehen zwinkern
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 07.10.2006, 12:57    Titel: Antworten mit Zitat

Hallo

Manu hat Folgendes geschrieben:
bloß wie hast du die schirft so groß gemacht?


Er arbeitet mit SCREEN 13. Die hat nur 320x200 Pixel, da wird die Schrift automatisch so gross.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 07.10.2006, 20:23    Titel: Antworten mit Zitat

danke für alle antworten

jetzt funktioniert mein programm

ein spezielles dankeschön an programmieren

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz