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:

Habe ein Problem mit meinem Mensch Ärger dich nicht Projekt!
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
mpt



Anmeldungsdatum: 19.03.2007
Beiträge: 9

BeitragVerfasst am: 19.03.2007, 11:31    Titel: Habe ein Problem mit meinem Mensch Ärger dich nicht Projekt! Antworten mit Zitat

Mein Problem mit dem Code ist das der Spielstein der ausgewählt wird die gewürfelte Zahl vorzugehen spätestens beim zweiten setzen nicht die gewürfelte Zahl vorgeht sondern eine ganz andere.

Ich hoffe das ihr mir helfen könnt , ich habe nämlich keine Ahnung wodran es liegen könnte.

Der Gesamte Code
Code:
rem Haupt
DECLARE sub Kreis(x,y,Groesse,Farbe1)
screen 20
do
Rem Blaue Steine
Kreis 320,240,20,1:rem 5
Kreis 270,240,20,1:rem 4
Kreis 220,240,20,1:rem 3
Kreis 170,240,20,1:rem 2
Kreis 120,240,20,2:rem 1
Kreis 320,190,20,1:rem 6
Kreis 320,140,20,1:rem 7
Kreis 320,90,20,1:rem 8
Kreis 320,40,20,1:rem 9
Kreis 370,40,20,1:rem 10
Kreis 420,40,20,3:rem 11
Kreis 420,90,20,1:rem 12
Kreis 420,190,20,1:rem 14
Kreis 420,140,20,1:rem 13
Kreis 420,240,20,1:rem 15
Kreis 470,240,20,1:rem 16
Kreis 520,240,20,1:rem 17
Kreis 570,240,20,1:rem 18
Kreis 620,290,20,1:rem 20
Kreis 620,240,20,1:rem 19
Kreis 620,340,20,4:rem 21
Kreis 570,340,20,1:rem 22
Kreis 520,340,20,1:rem 23
Kreis 420,340,20,1:rem 25
Kreis 470,340,20,1:rem 24
Kreis 420,390,20,1:rem 26
Kreis 420,440,20,1:rem 27
Kreis 420,490,20,1:rem 28
Kreis 320,540,20,5:rem 31
Kreis 320,490,20,1:rem 29
Kreis 370,540,20,1:rem 30
Kreis 420,540,20,1:rem 32
Kreis 320,440,20,1:rem 33
Kreis 320,390,20,1:rem 34
Kreis 320,340,20,1:rem 35
Kreis 270,340,20,1:rem 36
Kreis 220,340,20,1:rem 37
Kreis 170,340,20,1:rem 38
Kreis 120,290,20,1:rem 40
Kreis 120,340,20,1:rem 39
rem zielsteine
Kreis 370,90,20,3:rem _1
Kreis 370,140,20,3
Kreis 370,190,20,3
Kreis 370,240,20,3

Kreis 370,340,20,5:rem _4
Kreis 370,390,20,5
Kreis 370,440,20,5
Kreis 370,490,20,5

Kreis 170,290,20,2:rem _1
Kreis 220,290,20,2
Kreis 270,290,20,2
Kreis 320,290,20,2

Kreis 420,290,20,4:rem _4
Kreis 470,290,20,4
Kreis 520,290,20,4
Kreis 570,290,20,4

rem startsteine

rem grün (a)
Kreis 170,140,20,2
Kreis 120,140,20,2
Kreis 170,90,20,2
Kreis 120,90,20,2

rem blau (b)
Kreis 520,40,20,3
Kreis 520,90,20,3
Kreis 570,40,20,3
Kreis 570,90,20,3

rem rot (c)
Kreis 620,440,20,4
Kreis 570,440,20,4
Kreis 620,490,20,4
Kreis 570,490,20,4

rem lila(d)
Kreis 220,540,20,5
Kreis 170,540,20,5
Kreis 220,490,20,5
Kreis 170,490,20,5

rem Else
rem Würfel
randomize timer
w=int(rnd*6)+1
locate 8,100:print"Wuerfeln (a) Spielende (e)"
DO
Eingabe$=Inkey$
LOOP WHILE Eingabe$=""
IF Eingabe$=CHR$(097) then locate 10,100:print"Sie haben eine ";w;" gewuerfelt"
IF Eingabe$=CHR$(121) then a1=a1+w
IF Eingabe$=CHR$(120) then a2=a2+w
IF Eingabe$=CHR$(099) then a3=a3+w
IF Eingabe$=CHR$(118) then a4=a4+w
If Eingabe$=CHR$(101) then end
rem speilsteine & Technike
rem 1
if a1=5 then Kreis 320,240,20,2:rem 5
if a1=4 then Kreis 270,240,20,2:rem 4
if a1=3 then Kreis 220,240,20,2:rem 3
if a1=2 then Kreis 170,240,20,2:rem 2
if a1=1 then Kreis 120,240,20,2:rem 1k
if a1=6 then Kreis 320,190,20,2:rem 6
if a1=7 then Kreis 320,140,20,2:rem 7
if a1=8 then Kreis 320,90,20,2:rem 8
if a1=9 then Kreis 320,40,20,2:rem 9
if a1=10 then Kreis 370,40,20,2:rem 10
if a1=11 then Kreis 420,40,20,2:rem 11k
if a1=12 then Kreis 420,90,20,2:rem 12
if a1=14 then Kreis 420,190,20,2:rem 14
if a1=13 then Kreis 420,140,20,2:rem 13
if a1=15 then Kreis 420,240,20,2:rem 15
if a1=16 then Kreis 470,240,20,2:rem 16
if a1=17 then Kreis 520,240,20,2:rem 17
if a1=18 then Kreis 570,240,20,2:rem 18
if a1=20 then Kreis 620,290,20,2:rem 20
if a1=19 then Kreis 620,240,20,2:rem 19
if a1=21 then Kreis 620,340,20,2:rem 21k
if a1=22 then Kreis 570,340,20,2:rem 22
if a1=23 then Kreis 520,340,20,2:rem 23
if a1=25 then Kreis 420,340,20,2:rem 25
if a1=24 then Kreis 470,340,20,2:rem 24
if a1=26 then Kreis 420,390,20,2:rem 26
if a1=27 then Kreis 420,440,20,2:rem 27
if a1=28 then Kreis 420,490,20,2:rem 28
if a1=31 then Kreis 320,540,20,2:rem 31k
if a1=29 then Kreis 320,490,20,2:rem 29
if a1=30 then Kreis 370,540,20,2:rem 30
if a1=32 then Kreis 420,540,20,2:rem 32
if a1=33 then Kreis 320,440,20,2:rem 33
if a1=34 then Kreis 320,390,20,2:rem 34
if a1=35 then Kreis 320,340,20,2:rem 35
if a1=36 then Kreis 270,340,20,2:rem 36
if a1=37 then Kreis 220,340,20,2:rem 37
if a1=38 then Kreis 170,340,20,2:rem 38
if a1=40 then Kreis 120,290,20,2:rem 40
if a1=39 then Kreis 120,340,20,2:rem 39

rem 2
if a2=5 then Kreis 320,240,20,2:rem 5
if a2=4 then Kreis 270,240,20,2:rem 4
if a2=3 then Kreis 220,240,20,2:rem 3
if a2=2 then Kreis 170,240,20,2:rem 2
if a2=1 then Kreis 120,240,20,2:rem 1k
if a2=6 then Kreis 320,190,20,2:rem 6
if a2=7 then Kreis 320,140,20,2:rem 7
if a2=8 then Kreis 320,90,20,2:rem 8
if a2=9 then Kreis 320,40,20,2:rem 9
if a2=10 then Kreis 370,40,20,2:rem 10
if a2=11 then Kreis 420,40,20,2:rem 11k
if a2=12 then Kreis 420,90,20,2:rem 12
if a2=14 then Kreis 420,190,20,2:rem 14
if a2=13 then Kreis 420,140,20,2:rem 13
if a2=15 then Kreis 420,240,20,2:rem 15
if a2=16 then Kreis 470,240,20,2:rem 16
if a2=17 then Kreis 520,240,20,2:rem 17
if a2=18 then Kreis 570,240,20,2:rem 18
if a2=20 then Kreis 620,290,20,2:rem 20
if a2=19 then Kreis 620,240,20,2:rem 19
if a2=21 then Kreis 620,340,20,2:rem 21k
if a2=22 then Kreis 570,340,20,2:rem 22
if a2=23 then Kreis 520,340,20,2:rem 23
if a2=25 then Kreis 420,340,20,2:rem 25
if a2=24 then Kreis 470,340,20,2:rem 24
if a2=26 then Kreis 420,390,20,2:rem 26
if a2=27 then Kreis 420,440,20,2:rem 27
if a2=28 then Kreis 420,490,20,2:rem 28
if a2=31 then Kreis 320,540,20,2:rem 31k
if a2=29 then Kreis 320,490,20,2:rem 29
if a2=30 then Kreis 370,540,20,2:rem 30
if a2=32 then Kreis 420,540,20,2:rem 32
if a2=33 then Kreis 320,440,20,2:rem 33
if a2=34 then Kreis 320,390,20,2:rem 34
if a2=35 then Kreis 320,340,20,2:rem 35
if a2=36 then Kreis 270,340,20,2:rem 36
if a2=37 then Kreis 220,340,20,2:rem 37
if a2=38 then Kreis 170,340,20,2:rem 38
if a2=40 then Kreis 120,290,20,2:rem 40
if a2=39 then Kreis 120,340,20,2:rem 39

rem 3
if a3=5 then Kreis 320,240,20,2:rem 5
if a3=4 then Kreis 270,240,20,2:rem 4
if a3=3 then Kreis 220,240,20,2:rem 3
if a3=2 then Kreis 170,240,20,2:rem 2
if a3=1 then Kreis 120,240,20,2:rem 1k
if a3=6 then Kreis 320,190,20,2:rem 6
if a3=7 then Kreis 320,140,20,2:rem 7
if a3=8 then Kreis 320,90,20,2:rem 8
if a3=9 then Kreis 320,40,20,2:rem 9
if a3=10 then Kreis 370,40,20,2:rem 10
if a3=11 then Kreis 420,40,20,2:rem 11k
if a3=12 then Kreis 420,90,20,2:rem 12
if a3=14 then Kreis 420,190,20,2:rem 14
if a3=13 then Kreis 420,140,20,2:rem 13
if a3=15 then Kreis 420,240,20,2:rem 15
if a3=16 then Kreis 470,240,20,2:rem 16
if a3=17 then Kreis 520,240,20,2:rem 17
if a3=18 then Kreis 570,240,20,2:rem 18
if a3=20 then Kreis 620,290,20,2:rem 20
if a3=19 then Kreis 620,240,20,2:rem 19
if a3=21 then Kreis 620,340,20,2:rem 21k
if a3=22 then Kreis 570,340,20,2:rem 22
if a3=23 then Kreis 520,340,20,2:rem 23
if a3=25 then Kreis 420,340,20,2:rem 25
if a3=24 then Kreis 470,340,20,2:rem 24
if a3=26 then Kreis 420,390,20,2:rem 26
if a3=27 then Kreis 420,440,20,2:rem 27
if a3=28 then Kreis 420,490,20,2:rem 28
if a3=31 then Kreis 320,540,20,2:rem 31k
if a3=29 then Kreis 320,490,20,2:rem 29
if a3=30 then Kreis 370,540,20,2:rem 30
if a3=32 then Kreis 420,540,20,2:rem 32
if a3=33 then Kreis 320,440,20,2:rem 33
if a3=34 then Kreis 320,390,20,2:rem 34
if a3=35 then Kreis 320,340,20,2:rem 35
if a3=36 then Kreis 270,340,20,2:rem 36
if a3=37 then Kreis 220,340,20,2:rem 37
if a3=38 then Kreis 170,340,20,2:rem 38
if a3=40 then Kreis 120,290,20,2:rem 40
if a3=39 then Kreis 120,340,20,2:rem 39

rem 4
if a4=5 then Kreis 320,240,20,2:rem 5
if a4=4 then Kreis 270,240,20,2:rem 4
if a4=3 then Kreis 220,240,20,2:rem 3
if a4=2 then Kreis 170,240,20,2:rem 2
if a4=1 then Kreis 120,240,20,2:rem 1k
if a4=6 then Kreis 320,190,20,2:rem 6
if a4=7 then Kreis 320,140,20,2:rem 7
if a4=8 then Kreis 320,90,20,2:rem 8
if a4=9 then Kreis 320,40,20,2:rem 9
if a4=10 then Kreis 370,40,20,2:rem 10
if a4=11 then Kreis 420,40,20,2:rem 11k
if a4=12 then Kreis 420,90,20,2:rem 12
if a4=14 then Kreis 420,190,20,2:rem 14
if a4=13 then Kreis 420,140,20,2:rem 13
if a4=15 then Kreis 420,240,20,2:rem 15
if a4=16 then Kreis 470,240,20,2:rem 16
if a4=17 then Kreis 520,240,20,2:rem 17
if a4=18 then Kreis 570,240,20,2:rem 18
if a4=20 then Kreis 620,290,20,2:rem 20
if a4=19 then Kreis 620,240,20,2:rem 19
if a4=21 then Kreis 620,340,20,2:rem 21k
if a4=22 then Kreis 570,340,20,2:rem 22
if a4=23 then Kreis 520,340,20,2:rem 23
if a4=25 then Kreis 420,340,20,2:rem 25
if a4=24 then Kreis 470,340,20,2:rem 24
if a4=26 then Kreis 420,390,20,2:rem 26
if a4=27 then Kreis 420,440,20,2:rem 27
if a4=28 then Kreis 420,490,20,2:rem 28
if a4=31 then Kreis 320,540,20,2:rem 31k
if a4=29 then Kreis 320,490,20,2:rem 29
if a4=30 then Kreis 370,540,20,2:rem 30
if a4=32 then Kreis 420,540,20,2:rem 32
if a4=33 then Kreis 320,440,20,2:rem 33
if a4=34 then Kreis 320,390,20,2:rem 34
if a4=35 then Kreis 320,340,20,2:rem 35
if a4=36 then Kreis 270,340,20,2:rem 36
if a4=37 then Kreis 220,340,20,2:rem 37
if a4=38 then Kreis 170,340,20,2:rem 38
if a4=40 then Kreis 120,290,20,2:rem 40
if a4=39 then Kreis 120,340,20,2:rem 39
sleep
loop
rem Subs
sub Kreis(x,y,Groesse,Farbe1)
circle(x,y),Groesse,Farbe1
paint(x,y),Farbe1
end sub   
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 19.03.2007, 12:37    Titel: Antworten mit Zitat

Wie meinst du, dass dann eine andere Zahl kommt?
Der Zufallsgenerator sollte immer eine andere liefern... neutral

Aber allgemein:
Ich denke mal, dass das für den WB ist. Da ein paar Tipps: REM durch Apostrophe ersetzen, keine 2 Befehle in einer Zeile (Stichwort Doppelpunkt) und die ellenlangen IF's durch ein SELECT CASE ersetzen. zwinkern

Greets,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mpt



Anmeldungsdatum: 19.03.2007
Beiträge: 9

BeitragVerfasst am: 19.03.2007, 16:51    Titel: Antworten mit Zitat

bei der zweiten gewürfelten zahl wird nicht die spielfigur die gewürfelte zahl vorgestzt sondern eine komplett andere.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 19.03.2007, 16:54    Titel: Antworten mit Zitat

Welcher Würfel, ich les immer nur Kreis und If und Rem ?!?! durchgeknallt
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
mpt



Anmeldungsdatum: 19.03.2007
Beiträge: 9

BeitragVerfasst am: 19.03.2007, 17:20    Titel: Antworten mit Zitat

randomize timer
w=int(rnd*6)+1

da ist der befehl für die zufallszahl und diese Zufallszahl wird beim zweiten mal setzen irgendwie nicht genommen sondern der Stein wird eine belibige andere Zahl vorgesetzt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 19.03.2007, 17:29    Titel: Antworten mit Zitat

weia... Das Spielfeld sieht nett aus... ist aber eigentlich auch das einzigste was ich sehe:

Soweit ich das sehe wird nach dem würfeln dein "Spielstein" an die position gesetzt, bzw sollte gesetzt werden, wird aber im nächsten augeblick mit deinem Spielfeld wieder gelöscht...
Also eigentlich seh ich nichts grinsen
Woher weiss ich eigentlich welcher player ich bin ?! da steht nur würfeln und ende zwinkern
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
mpt



Anmeldungsdatum: 19.03.2007
Beiträge: 9

BeitragVerfasst am: 19.03.2007, 17:35    Titel: Antworten mit Zitat

Eternal_pain hat Folgendes geschrieben:
weia... Das Spielfeld sieht nett aus... ist aber eigentlich auch das einzigste was ich sehe:

Soweit ich das sehe wird nach dem würfeln dein "Spielstein" an die position gesetzt, bzw sollte gesetzt werden, wird aber im nächsten augeblick mit deinem Spielfeld wieder gelöscht...
Also eigentlich seh ich nichts grinsen
Woher weiss ich eigentlich welcher player ich bin ?! da steht nur würfeln und ende zwinkern



y x c v

sind die tasten mit denen man setzen kann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 19.03.2007, 17:36    Titel: Antworten mit Zitat

Ja, habe ich auch gerade erst gemerkt, allerdings funktioniert das würfeln bei mir wie es soll....
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 19.03.2007, 19:47    Titel: Antworten mit Zitat

Vielleicht liegt es daran?
Code:
Eingabe$=Inkey$
LOOP WHILE Eingabe$=""

Inkey$ fragt den Tastaturbuffer ab. Wenn du irgendwo zwischendrin mal eine Taste drückst und nicht ausliest (z. B. SLEEP), dann wird die hier verwendet.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 19.03.2007, 20:11    Titel: Antworten mit Zitat

Die langen IF-Blöcke kannst du übrigens durch wesentlich kürzere Codes ersetzen: http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Anfaengerfehler.html
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 19.03.2007, 21:31    Titel: Antworten mit Zitat

Hi,
wenn du
Code:
Sub Kreis(x, y, Groesse, Farbe)
  Circle(x, y), Groesse, Farbe,,,,F
End Sub
schreibst, brauchste die Paint-Anweisung nicht mehr..
(steht nämlich in der Befehlsreferenz, funktioniert auch zwinkern)
ähmm, dann kannste natürlich in deinem ganzen Code auch die Sub
entfernen und den direkten Aufruf nehmen..
Und bei
Code:
Do
  Eingabe$=Inkey$
  Sleep 1
Loop While Eingabe$=""
macht sich die Sleep-Anweisung ganz gut..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
mpt



Anmeldungsdatum: 19.03.2007
Beiträge: 9

BeitragVerfasst am: 20.03.2007, 13:17    Titel: Antworten mit Zitat

jetzt kommt das problem erst beim dritten mal würfeln. glaube aber das die letzte gewürfelte zahl gesetzt wird anstatt die man aktuell gewürfelt hat.

Woron kann das liegen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 20.03.2007, 23:24    Titel: Antworten mit Zitat

Hi,
da hast du dir einen Bug eingebaut, der nicht so leicht zu finden ist mit den Augen rollen
Erst wenn man mal den Programmablauf durchspielt wird das sichtbar.
Code:
do
(Spielfeld zeichnen)
(Zufallswert bilden)
  do
  (Eingabe$ <- Tastaturbuffer auslesen)
  loop (wenn leer)
Eingabe$ = "a" Zufallswert anzeigen
Eingabe$ = "yxcv" Position berechnen
Eingabe$ = "e" Programmende
(Position anzeigen) ' alle in grün? alle von der selben Posision startend?
sleep <- wartet auf Taste, aber Tastaturbuffer wird nicht geleert!!!!!
loop

nächster Durchlauf:
1. Spielfeld wird neu gezeichnet (Spielerpositionen werden übermalt!)
2. neuer Zufallswert wird gebildet (aber nicht angezeigt !!!)
3. Eingabe$ wird ??? (wurde bei 'Sleep' y,x,c,v betätigt wird die neue, nicht angezeigte Zufallszahl in w benutzt)
4. Spielerpositionen werden angezeigt (wieder alle in grün??)
5. wieder hängt die Eingabe in der Sleep-Falle!!!

aber da sind noch weitere Bugs:
Da der Eingabe$ nicht gleichzeitig "a" und "y,x,c,v" sein kann wird der angezeigte Zufallswert w niemals zu a1,a2,a3,a4 addiert, erst beim nächsten Durchlauf ein neuer Zufallswert.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
mpt



Anmeldungsdatum: 19.03.2007
Beiträge: 9

BeitragVerfasst am: 21.03.2007, 17:09    Titel: Antworten mit Zitat

und wie kann ich die tasterturabfrage richtig machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 21.03.2007, 17:18    Titel: Antworten mit Zitat

Du könntest vor der Tastaturabfrage erst einmal den Buffer leeren:
Code:
DO: Eingabe$ = INKEY$: LOOP UNTIL Eingabe$ = ""
DO: Eingabe$ = INKEY$: LOOP UNTIL Eingabe$ <> ""

Erste Zeile wartet so lange, bis der Buffer leer ist, die zweite wartet dann so lang, bis eine neue Taste gedrückt wurde.

Die Anzeige der gewürfelten Zahl würde ich, ohne Tastaturabfrage, immer machen, noch vor der Auswahl der zu ziehenden Figur.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 21.03.2007, 18:55    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Du könntest vor der Tastaturabfrage erst einmal den Buffer leeren:
Code:
DO: Eingabe$ = INKEY$: LOOP UNTIL Eingabe$ = ""
DO: Eingabe$ = INKEY$: LOOP UNTIL Eingabe$ <> ""

Erste Zeile wartet so lange, bis der Buffer leer ist, die zweite wartet dann so lang, bis eine neue Taste gedrückt wurde.

Die Anzeige der gewürfelten Zahl würde ich, ohne Tastaturabfrage, immer machen, noch vor der Auswahl der zu ziehenden Figur.
..besser noch:
Code:
..
Do: Eingabe$=Inkey:Sleep 1: Loop Until Eingabe$<>""
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 21.03.2007, 19:20    Titel: Antworten mit Zitat

ytwinky hat Folgendes geschrieben:
..besser noch:
Code:
..
Do: Eingabe$=Inkey:Sleep 1: Loop Until Eingabe$<>""
Gruß
ytwinky

Habe ich schon ein paar mal gelesen, bin aber nicht dahinter gekommen: Warum ist es mit SLEEP 1 besser?


edit: Frage geklärt - ich dachte, wir sind noch bei
Code:
LOOP UNTIL Eingabe$=""

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mpt



Anmeldungsdatum: 19.03.2007
Beiträge: 9

BeitragVerfasst am: 22.03.2007, 10:56    Titel: Antworten mit Zitat

Habe alles mal ausprobiert und alles hat keine wirkliche Besserung gebracht , gibt es vielleicht Alternativen zu meiner Tasterturabfrage?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 22.03.2007, 11:24    Titel: Antworten mit Zitat

z.B. so:
Code:
randomize timer
do
(Spielfeld zeichnen)
(Position anzeigen)
(Zufallswert bilden und anzeigen)

Print"Welcher Spieler [yxcv] zieht [e=Ende]: "
  do
  Eingabe$=Inkey$
  IF Eingabe$="y" then a1=a1+w : Exit do
  IF Eingabe$="x" then a2=a2+w : Exit do
  IF Eingabe$="c" then a3=a3+w : Exit do
  IF Eingabe$="v" then a4=a4+w : Exit do
  If Eingabe$="e" then end
  loop
loop

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 22.03.2007, 18:14    Titel: Antworten mit Zitat

Hi mpt,
volta hat Folgendes geschrieben:
Code:
..
(Spielfeld zeichnen)
hier ist mein Beitrag zu deinem Mensch-ärgere-dich-nicht-Projekt..
(So sieht das Spielfeld dem Original ziemlich ähnlich grinsen)
Code:
Option Explicit
Const Schwarz=0, Blau=&H0000D2, Gruen=&H00D200, Rot=&HD20000, Gelb=&HFFFF00, Weiss=&HFFFFF0, Bg=&HD2D200
Const Diff=50, FeldRadius=15
Declare Sub Kreis(byVal x As Integer, byVal y As Integer, byVal Farbe As Integer, byVal Radius As Integer=FeldRadius, byVal Flag As Integer=0)
Declare Sub Pott(byVal LUx As Integer, byVal LUy As Integer, byVal Farbe As Integer)
Declare Sub FeldH(byVal x As Integer, byVal y As Integer, byVal Farbe As Integer)
Declare Sub FeldV(byVal x As Integer, byVal y As Integer, byVal Farbe As Integer)
Declare Sub Home(byVal x As Integer, byVal y As Integer, byVal dx As Integer=0, byVal dy As Integer=0, byVal Farbe As Integer)
Dim As Integer i

Screen 20, 32
Color Schwarz, Bg
Cls
Randomize Timer 'Das war der Init-Teil
FeldH(50, 250, Weiss)
FeldV(250, 50, Weiss)
Kreis(50, 300, Weiss)
FeldH(50, 350, Weiss)
FeldV(250, 400, Weiss)
Kreis(300, 50, Weiss)
Kreis(300, 550, Weiss)
FeldV(350, 50, Weiss)
FeldV(350, 400, Weiss)
FeldH(350, 350, Weiss)
FeldH(350, 250, Weiss)
Kreis(550, 300, Weiss)
Pott(50, 50, Rot)
Kreis(50, 250, Rot, FeldRadius+3)
Home(100, 300, 1, 0, Rot)
Pott(500, 50, Gruen)
Kreis(350, 50, Gruen, FeldRadius+3)
Home(300, 100, 0, 1, Gruen)
Pott(50, 500, Blau)
Kreis(250, 550, Blau, FeldRadius+3)
Home(300, 350, 0, 1, Blau)
Pott(500, 500, Gelb)
Kreis(550, 350, Gelb, FeldRadius+3)
Home(350, 300, 1, 0, Gelb)
Sleep

'Subs
Sub Pott(byVal LoX As Integer, byVal LoY As Integer, byVal Farbe As Integer)
  Kreis(LoX, LoY, Farbe)
  Kreis(LoX+Diff, LoY, Farbe)
  Kreis(LoX, LoY+Diff, Farbe)
  Kreis(LoX+Diff, LoY+Diff, Farbe)
End Sub

Sub Kreis(byVal x As Integer, byVal y As Integer, byVal Farbe As Integer, byVal Radius As Integer=FeldRadius, byVal Flag As Integer=0)
  Dim As Integer i
  Circle(x, y), Radius, Farbe,,,,F
  If Flag Then Exit Sub
  For i=1 To 3
    Circle(x, y), Radius+i, Schwarz
  Next Wasimmerduwillst
End Sub

Sub FeldH(byVal x As Integer, byVal y As Integer, byVal Farbe As Integer)
  Dim As Integer i
  For i=0 To 4
    Kreis(x+i*Diff, y, Farbe)
  Next Wasimmerduwillst
End Sub

Sub FeldV(byVal x As Integer, byVal y As Integer, byVal Farbe As Integer)
  Dim As Integer i
  For i=0 To 3
    Kreis(x, y+i*Diff, Farbe)
  Next Wasimmerduwillst
End Sub

Sub Home(byVal x As Integer, byVal y As Integer, byVal dx As Integer=0, byVal dy As Integer=0, byVal Farbe As Integer)
  Dim As Integer i
  For i=0 To 3
    Kreis(x+dx*i*Diff, y+dy*i*Diff, Farbe,, 1)
  Next Wasimmerduwillst
End Sub
..wahrscheinlich sind auch hier noch Optimierungen möglich('rundere' Kreise etc.)
(Zu den Verbindungsstrichen hatte ich keine Lust mehr..)
..aber es ist ja dein Projekt, mach, wie du möchtest:D
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..

Zuletzt bearbeitet von ytwinky am 11.08.2007, 18:28, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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