Tippübung

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Travis

Betreff: Tippübung

BeitragDi, Jun 01, 2004 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Inspiriert durch den Reaktionstest, habe ich jetzt eine kleine Geschicklichkeitsübung ausgetüftelt. In 15 Sekunden muss man so oft wie möglich die Tasten A+S oder K+L in abwechselner Folge drücken.

BlitzBasic: [AUSKLAPPEN]

; Tippübung
; Copyright (C) Mai 2004, Daniel Nobis

Graphics 800,470,16,2
SetBuffer BackBuffer()
AppTitle "Tippübung"

Global Font1 = LoadFont("Verdana", 16,0,0,0)
Global Font2 = LoadFont("Arial", 24,1,0,0)
Global Font3 = LoadFont("Arial", 12,1,0,0)
Global Font4 = LoadFont("Arial", 48,1,0,0)
Global Font5 = LoadFont("Arial", 36,1,0,0)
Global Hand, Zeit, Start, Status, Hits

UpdateDisplay()
WaitKey

Start = MilliSecs()
If KeyHit(30) Or KeyHit(31) Then Hand = 1
If KeyHit(37) Or KeyHit(38) Then Hand = 2


; --- Hauptschleife ---
Repeat
Cls

UpdateDisplay()
UpdateTime()
UpdateKeys()

Flip
Until KeyHit(1)
End
; --- Hauptschleife ---


; --- Display aktualisieren ---
Function UpdateDisplay()

; Gitter
Color 50,50,50
For yy = 0 To 600 Step 50
For xx = 0 To 800 Step 50
;Rect xx,yy,50,50,0
Next
Next

; Überschrift
SetFont Font2
Color 255,255,255
Text 350,10, "Tippübung"

; Copyright
SetFont Font3
Text 320, 35, "Copyright (C) 2004, Daniel Nobis"

; Einleitung
SetFont Font1
Text 22,80, "In diesem kleinen Test müssen Sie versuchen mit nur einer Hand in 15 Sekunden so oft wie möglich zwei Tasten"
Text 20,95, "hintereinander zu drücken. Sie können zwischen der der linken und der rechten Hand wählen. Entsprechend Ihrer"
Text 60,110, "Wahl drücken Sie entweder die Tasten A und S oder K und L. Am Ende erhalten Sie eine Auswertung."

Text 200,155, "Starten Sie jetzt direkt durch Druck auf eine dieser Tasten."

; linke Tasten
Color 100,100,100
Rect 150,220,50,50,1
Rect 250,220,50,50,1
Rect 500,220,50,50,1
Rect 600,220,50,50,1

; Rechte Tasten
Color 170,170,170
Rect 150,220,50,50,0
Rect 250,220,50,50,0
Rect 500,220,50,50,0
Rect 600,220,50,50,0

; Beschriftung
SetFont Font4
Color 255,255,255
Text 161,222, "A"
Text 261,222, "S"
Text 510,222, "K"
Text 611,222, "L"

; Handmodus
SetFont Font5
If Hand = 1 Then Text 355,232, "LINKS"
If Hand = 2 Then Text 338,232, "RECHTS"

; Anschläge
If Hand <> 0 Then
Color 255,255,255
Text 320, 375, "Anschläge"
If Hits > 175 Then Color 0,255,0
If Hits < 175 Then Color 255,255,0
If Hits < 100 Then Color 255,0,0
Text 380, 420, Hits
EndIf

End Function
; --- Display aktualisieren ---


; --- Laufzeit aktualisieren ---
Function UpdateTime()

If Hand <> 0 Then
Zeit = (MilliSecs()-Start)
AppTitle "Tippübung ("+ Zeit/1000 + " Sek)"
If Zeit/1000 > 12 Then Color 255,0,0
If Zeit/1000 < 12 Then Color 255,255,0
If Zeit/1000 < 6 Then Color 0,255,0
Rect 020, 310, Zeit/20, 30, 1 ; Balken
EndIf

Color 200,200,200
Rect 020,310,760,30,0 ; Rahmen

If Zeit => 15200 Then FlushKeys: Delay 3000: WaitKey(): End

End Function
; --- Laufzeit aktualisieren ---


; --- Tastendruck erfassen ---
Function UpdateKeys()
If Hand = 1 And KeyHit(30) And STATUS <> 1 Then Hits = Hits + 1 : STATUS = 1
If Hand = 1 And KeyHit(31) And STATUS <> 2 Then Hits = Hits + 1 : STATUS = 2

If Hand = 2 And KeyHit(37) And STATUS <> 1 Then Hits = Hits + 1 : STATUS = 1
If Hand = 2 And KeyHit(38) And STATUS <> 2 Then Hits = Hits + 1 : STATUS = 2
End Function
; --- Tastendruck erfassen ---


EDIT:

AS: 189
KL: 127
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Affje

BeitragDi, Jun 01, 2004 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
nun is meine tastatur im eimer Shocked
scherz...ich finds ganz lustig.
www.drachengarde.tk
Guckst da Hier

Blatolo

BeitragMi, Jun 02, 2004 6:42
Antworten mit Zitat
Benutzer-Profile anzeigen
AS: 167
KL: 246

@Travis
Bist du Linkshänder?

Travis

BeitragMi, Jun 02, 2004 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Jepp, bin ich Smile
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Jan_

Ehemaliger Admin

BeitragMi, Jun 02, 2004 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
also, hängt wahrscheinlich an der tastatur,
links, 102
rechts, 103
between angels and insects

DivineDominion

BeitragMi, Jun 02, 2004 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Abwechselnd mit Fingerheben (rechts geht nicht so gut, Zeigefinger verkrampft Neutral):
AS 122
KL 144

Finger versteifen, den linken Finger etwa 2-3mm weiter nach unten schauend als den rechten und mit Unterarm rumhämmern:
AS 174
KL 223

Smile
christian.tietze@gmail.com - https://christiantietze.de
macOS

Travis

BeitragMi, Jun 02, 2004 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Very Happy Ja, wenn man mit beiden Fingern 'gleichzeitig' drückt, funktioniert es leider auch. Ist aber eigentlich nicht Sinn der Übung, sonst hätte ja eine Taste gereicht.

Wenn ich's so mache:

AS: 198
KL: 186
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

cyby

BeitragMi, Jun 02, 2004 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
das macht richtig fun ^^
KS 208
AS 190

Blatolo

BeitragMi, Jun 02, 2004 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist nicht Sinn der Übung?
Oh.
Hatte mich schon gewundert warum 2 tasten ^^
aber dann könnte man das doch anders machen

pseudocode:
if umschaltbit
if keydown (K) and not keydown(L)
zähler=zähler+1
umschaltbit=false
else
if keydown (L) and not keydown(K)
zähler=zähler+1
umschaltbit=true
endif

Sollte doch so in etwa gehen

Travis

BeitragMi, Jun 02, 2004 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt, gute Idee

BlitzBasic: [AUSKLAPPEN]

Function UpdateKeys()

If Hand = 1 Then
If KeyHit(30) Then
If Not KeyHit(31) Then
If STATUS <> 1 Then Hits = Hits + 1 : STATUS = 1
EndIf
EndIf
EndIf

If Hand = 1 Then
If KeyHit(31) Then
If Not KeyHit(30) Then
If STATUS <> 2 Then Hits = Hits + 1 : STATUS = 2
EndIf
EndIf
EndIf

If Hand = 2 Then
If KeyHit(37) Then
If Not KeyHit(38) Then
If STATUS <> 1 Then Hits = Hits + 1 : STATUS = 1
EndIf
EndIf
EndIf

If Hand = 2 Then
If KeyHit(38) Then
If Not KeyHit(37) Then
If STATUS <> 2 Then Hits = Hits + 1 : STATUS = 2
EndIf
EndIf
EndIf

End Function


So hatte ich mir das gedacht.
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Blitzkrieg Bop

BeitragDo, Jun 03, 2004 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Theoretisch könnte man das ja noch spielerisch verfeinern Laughing

So viell in etwa:
BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
version$ = "0.2"
AppTitle "Simples Atorennspiel -.-'"+" "+version$
Const hoch = 200 , runter = 208 , links = 203 , rechts = 205 , space = 57


sx = 50-10
sy = 50
sbreite = 50
shoehe = 50

gx = 50-10
gy = 500
gbreite = 50
ghoehe = 50

pc_gewinn = False
spieler_gewinn = False

Repeat
Cls
Color 255,255,255 :Rect 0,(600/2),800,5 : Rect (800/2)-300,0,5,600 : Rect 700,0,5,600 : Text 735,150,"ZIEL" : Text 735,450,"ZIEL" : Text 35,150,"START" : Text 35,450,"START"
Color 129,129,129 : Rect sx,sy,sbreite,shoehe,1
Color 129,129,129 : Rect gx,gy,gbreite,ghoehe,1


;--Lenkung:
If KeyHit(rechts)
sx = sx + 10
EndIf
;---------
;Dauerhafte Bewegung des Gegner mit Zufalsschnelligkeit:
gx = gx + 1
;---------

If gx > 700 And spieler_gewinn = False
Color 255,255,255
Text (800/2),(600/2)+100,"DER PC HAT GEWONNEN!!!",1 : pc_gewinn = True
EndIf
If sx > 700 And pc_gewinn = False
Color 255,255,255
Text (800/2),(600/2)+100,"DU HAST GEWONNEN!!!",1 : spieler_gewinn = True
EndIf

Flip
Until KeyHit(1) : End

NAja, ist nur so ein Gedanke! MFG
~ Hey Ho Let's Go ~

soli

BeitragDo, Jun 03, 2004 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
sowas hatte ich mir mal am C64 und am Amiga gemacht.

Hab dann kleine Autos über den Bildschirm flitzen lassen,
und so eine Formel 1 mässige Wertung eingeführt.
Das ganze ging dann über mehrere Runden,
Schwierigkeitsgrad der Gegner war Variabel.
Highscore gab es natürlich auch.

Für die Eingabe habe ich
ABC vorwärts,
ZYX das ganze rückwärts,
Worte aus einer Datenbank
und zufällige Abfolge von
Buchstaben und Zahlen benutzt.

War dann am Ende ein spannender
kleiner Tippentrainer.


soli
solitaire

Flori-D

BeitragDo, Jun 03, 2004 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt hab ich einen geebrochenen Finger.Iss aber lustig. Very Happy
BB is Macht!

Homepage: www.flori-d.de

Gossi

BeitragDo, Jun 03, 2004 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow, das errinnert mich an Mario Party!

Vielleicht könnten ja alle Paar Sekunden die zu drückenden Tasten wechseln?! Dann muss man auch auf den Bildschirm achten und kann sich nicht auf die Tastatur verkrampfen.
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind.

Travis

BeitragDo, Jun 03, 2004 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Gossi
Das wäre ja Hammer schwierig. Vielleicht baue ich das noch in meiner Neusten Version ein. Hier mal eine andere Interpretation:

BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()

Global Font1 = LoadFont("Arial", 32,1,0,0)
Global Font2 = LoadFont("Arial", 12,1,0,0)
Global Font3 = LoadFont("Arial", 48,1,0,0)

Global n#, on#, Prozent

Type Feld
Field x,y,s,id,col
End Type

For fx = 0 To 320 Step 10
For fy = 0 To 240 Step 10
id = id + 1
f.feld = New feld
f\x = fx
f\y = fy
z = Rnd(4)
If z = 0 Then
f\s = 0
Else f\s = 1
EndIf
f\id = id
f\col = Rnd(150,200)
Next
Next

DebugLog id

Repeat
Cls

UpdateKeys()
DrawFeld(160,100)
DrawDisplay()

If MilliSecs()-Timer1 > 300-((100-Prozent)*16) Then DeleteFeld(): Timer1 = MilliSecs()

Flip
Until KeyHit(1) Or GameStatus() <> 0

Color 255,255,255

If GameStatus() = 1 Then
Text 220,202 ,"Gewonnen"
Else Text 220,202, "Verloren"
EndIf

Flip

Delay 2500
WaitKey
End



Function DrawDisplay()
SetFont Font1
Text 230,10, "Tippübung 2"
SetFont Font2
Text 237,40, "Copyright (C) 2004, Daniel Nobis"

Color 100,100,100
Rect 60,200,50,50,1
Rect 540,200,50,50,1
Color 170,170,170
Rect 60,200,50,50,0
Rect 540,200,50,50,0

SetFont Font3
Text 71,202, "A"
Text 551,202, "S"


Prozent = Int((on/n)*100)
If n <> 0 Then Text 280,390, Prozent + "%"

End Function


Function GameStatus()
n = 0: on = 0
For f.feld = Each feld
If f\s = 1 Then on = on + 1
n = n + 1
Next

If on = n Then Return 1 ; win
If on = 0 Then Return 2 ; lose

Return 0
End Function



Function UpdateKeys()
If KeyHit(30) Then
If Not KeyHit(31) Then
If STATUS <> 1 Then CreateFeld(): STATUS = 1
EndIf
EndIf

If KeyHit(31) Then
If Not KeyHit(30) Then
If STATUS <> 2 Then CreateFeld(): STATUS = 2
EndIf
EndIf
End Function



Function CreateFeld()
.wahl
ID = Rnd(1,825)

For f.feld = Each feld
If f\id = id And f\s = 0 Then f\s = 1: Return
Next

Goto wahl
End Function



Function DeleteFeld()
.wahl
ID = Rnd(1,825)

For f.feld = Each feld
If f\id = id And f\s = 1 Then f\s = 0: Return
Next

Goto wahl
End Function



Function DrawFeld(PosX,PosY)
For f.feld = Each feld
If f\s = 1 Then Color 0,f\col,0: Rect f\x+PosX, f\y+PosY, 10,10
Next
End Function


Das Prinzip sollte selbstklärend sein!
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Blitzkrieg Bop

BeitragDo, Jun 03, 2004 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch nicht schlecht!
Aber ich würde irgendwie eine Art Uhr einbauen, damit man sieht wie lange man das Feld erhlten konnte und es läuft halt eine Gesamtzeit ab oder irgendsowas, weil sonst drückt man die ganze Zeit bis man net mehr kann und man weiß net mal wie das nun zu bewerten ist.
~ Hey Ho Let's Go ~

Blatolo

BeitragFr, Jun 04, 2004 6:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist doch egal wie lange man es hält.
Wichtig ist nur dass man gewinnt.
Ist mir imho noch etwas zu einfach.

BlitzBasic: [AUSKLAPPEN]
If MilliSecs()-Timer1 > 300-((100-Prozent)*16) Then DeleteFeld(): Timer1 = MilliSecs()

Dadurch wird der gegner wenn man mehr hat schlechter und wenn man am verlieren ist wird er besser.
Würde es andersrum machen
Daher einfach aus (100-Prozent)*16 das machen Prozent*16
Und der Faktor 16 ist viel zu übertrieben.
Sch bei 19 Prozent würde er jeden Schleifendurchlauf einen wegnehmen, daher würde ich den Faktor 3 vorschlagen da er nur bei 100% jeden Schleifendurchlauf einen wegnimmt.
Daher würde die Codezeile dann so aussehen
BlitzBasic: [AUSKLAPPEN]
If MilliSecs()-Timer1 > 300-(Prozent*3) Then DeleteFeld(): Timer1 = MilliSecs()

So ist das Spiel fast unmöglich.
Dort könnte man wie Blitzkrieg Bop vorgeschlagen hat ne Uhr einbauen.
Oder man lässt den multiplikatopr ganz weg oder setzt ihn auf 2.
Auf mal 2 habe ich es grade so geschafft.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group