 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Wie viele Punkte würdet ihr vergeben |
1 |
|
25% |
[ 2 ] |
2 |
|
12% |
[ 1 ] |
3 |
|
62% |
[ 5 ] |
4 |
|
0% |
[ 0 ] |
5 |
|
0% |
[ 0 ] |
|
Stimmen insgesamt : 8 |
|
Autor |
Nachricht |
diddus

Anmeldungsdatum: 03.03.2008 Beiträge: 11
|
Verfasst am: 20.03.2008, 11:54 Titel: erstes Game |
|
|
Hi,
ich hab mein allerallererstes Anfänger-game geschrieben.
Ich weiß, dass der Quelltext fürchterlich unübersichtlich ist aber ich würde mch freuen wenn ihr abstimmen würdet wie es euch als Anfängerarbeit gefällt.
Hier ist der Quelltext:
Code: | Start:
'///////////////////////////////////////////////////////////////////////////////
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'-----------------------------------Diddus--------------------------------------
'///////////////////////////////////////////////////////////////////////////////
' Hier ist der Open Source-Code von meinem New Old Tennis
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'///////////////////////////////////////////////////////////////////////////////
'-------------------------------------------------------------------------------
'Variablendeklaration
'Hauptmenue und andere Menues:
Dim Auswahl as Integer = 1
'Spiel:
'Punkte:
Dim PunkteSpieler as Integer
Dim PunkteComp as Integer
'Positionen:
'Schlaeger
Dim SpielerPos as Integer = 300
Dim CompPos as Integer =300
'Ball
Dim BallPos_x as Integer = 400
Dim BallPos_y as Integer = 300
Dim BallRichtung_x as Integer = 20 'Senkrechtbeschleunigung
Dim BallRichtung_y as Integer = 0 'Waagerechtbeschleunigung
'///////////////////////////////////////////////////////////////////////////////
'Subs und functions
'WinAPI:
#INCLUDE "fbgfx.bi"
Declare Sub Highscore ()
Sub Highscore()
Dim Highscoreausgabe (1 To 20) as String
'Öffne Datei
Open "Highscore.txt" For Input as #1
'----------Lese Highscore ein---------------------------------------------------
Dim d as Integer
For d= 1 to 20
Line Input #1,Highscoreausgabe (d)
Next d
'---------Gebe Highscore aus----------------------------------------------------
Cls
Print
Dim i as Integer
For i= 1 to 20
Print Highscoreausgabe (i)
Next i
'-------------------------------------------------------------------------------
Locate 35,1
Print "Beliebige Taste druecken um ins Hauptmenue zu gelangen"
Print "x druecken um Highscore zu leeren"
Close #1
Do
Loop While Inkey$ = ""
If Multikey(FB.SC_X) Then
Kill "Highscore.txt"
Else
End If
End Sub
'-------------------------------------------------------------------------------
Declare Sub Anleitung ()
Sub Anleitung ()
Cls
Line (20,20)-(780,580),0,b
Locate 2,45
Print "Anleitung"
Locate 10, 5
Print "Ziel des Spiel ist es als erster 10 Punkte zu bekommen."
Locate 12, 5
Print "Benutze die Cursortasten oder den Nummernblock um deinen Schlaeger nach oben oder unten zu "
Locate 14, 5
Print "bewegen. Falls der Ball an deinem Schlaeger vorbei fliegt bekommt der Computer einen Punkt."
Locate 16, 5
Print "Versuche also durch geschicktes Spielen den Ball an deinem Gegner vorbei zu bewegen."
Locate 18, 5
Print "Wenn du Gewinnst kannst du dich in die Highscore-List eintragen."
Locate 35, 5
Print "Beliebige Taste druecken um ins Hauptmenue zurueckzukehren!"
Sleep
End Sub
'///////////////////////////////////////////////////////////////////////////////
'----------------Hauptmenue------------------------------------------------------
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
hauptmenue:
'Ausgabe
Cls
Screen 19
Color 15,0
Cls
Line (20,20)-(780,580),2,b
Locate 2,45
Print "OldStyleTennis"
Locate 10,45
Print "Starte Spiel"
Locate 15,45
Print "Highscore"
Locate 20,45
Print "Anleitung"
Locate 25,45
Print "Beenden"
Locate 30,45
Locate 30,40
Print ">"
Auswahl = 1
'Eingabe
Eingabe:
If MULTIKEY(&h48) Then
If Auswahl = 1 Then
Auswahl = 4
Else
Auswahl = Auswahl - 1
End If
ElseIF MULTIKEY(&h50) Then
If Auswahl = 4 Then
Auswahl = 1
Else
Auswahl = Auswahl + 1
End If
ElseIF MULTIKEY(&h1C) Then
Auswahl = Auswahl * 10 +Auswahl
End If
'Loeschen des Pfeils
Locate 10,40
Print " "
Locate 15,40
Print " "
Locate 20,40
Print " "
Locate 25,40
Print " "
Locate 30,40
Print " "
If Auswahl > 4 Then
'Sprung zu entsprechenden Teilen des Programms
If Auswahl = 11 Then
Goto Spiel
ElseIf Auswahl = 22 Then
Highscore
Goto Hauptmenue
ElseIf Auswahl = 33 Then
Anleitung
Goto Hauptmenue
ElseIf Auswahl = 44 Then
End
End If
'Feststellen der Pfeilposition
ElseIf Auswahl = 1 Then
Locate 10,40
Print ">"
ElseIf Auswahl = 2 Then
Locate 15,40
Print ">"
ElseIf Auswahl = 3 Then
Locate 20,40
Print ">"
ElseIf Auswahl = 4 Then
Locate 25,40
Print ">"
EndIf
'Pfeil zeichnen
Do
Loop While Inkey$ = ""
'Nach oben springen
Goto Eingabe
'///////////////////////////////////////////////////////////////////////////////
'----------------------Hier folgt der Code fuer das eigentliche Spiel------------
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Spiel:
'Überpruefen ob jm. Gewonnen hat:
If PunkteSpieler = 10 Then
Locate 15,45
Print "Du Hast Gewonnen!!!"
Sleep 2000
Dim HighscoreName as String
Locate 15,45
Do
Loop While Inkey$ = ""
Input"Gib Bitte deinen Namen ein:",HighscoreName
Open "Highscore.txt" For Append as #2
Dim GamerPoints as Integer
Dim CPoints as Integer
GamerPoints = PunkteSpieler
CPoints = PunkteComp
Dim AusgabePunkteSpieler as String
Dim AusgabePunkteComp as String
AusgabePunkteSpieler = STR(PunkteSpieler)
AusgabePunkteComp = STR(PunkteComp)
Locate 2,0
Print #2, HighscoreName,AusgabePunkteSpieler,":",AusgabePunkteComp
Close #2
PunkteSpieler = 0
PunkteComp = 0
SpielerPos = 300
CompPos = 300
BallRichtung_x = 20
BallRichtung_y = 0
Goto Hauptmenue
ElseIf PunkteComp = 10 Then
Locate 15, 45
Print "Du hast leider verloren"
Sleep 3000
PunkteSpieler = 0
PunkteComp = 0
SpielerPos = 300
CompPos = 300
BallRichtung_x = 20
BallRichtung_y = 0
Goto Hauptmenue
End If
'Grafik Ausgeben (800x600) px:
'Rahmen:
Color 2,0
Cls
Line (5,20)-(795,595),15,b
'Ball und Schlaeger zeichnen
Randomize Timer
Ballrichtung_y = RND * 23
BallRichtung_y = BallRichtung_y - RND * 23
Circle (BallPos_x,BallPos_y),20,2, , , , F
Line (7,SpielerPos -50)-(20,SpielerPos +50),2,bf
Line (780,CompPos -50)-(793,CompPos +50),2,bf
'Text
Locate 1,10
Print "Player:"
Locate 1, 20
Print PunkteSpieler
Locate 1,75
Print "Comp:"
Locate 1,85
Print PunkteComp
Sleep 1000
'///////////////////////////////////////////////////////////////////////////////
'----------------Bewegungen-----------------------------------------------------
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'CompBewegung:
Anfang:
Sleep 100
If BallPos_y < CompPos and CompPos > 80 Then
Line (780,CompPos + 50)-(793,CompPos + 40),0,bf
CompPos = CompPos - 10
Line (780,CompPos -50)-(793,CompPos +50),2,bf
ElseIf BallPos_y > CompPos and CompPos < 540 Then
Line (780,CompPos -50)-(793,CompPos -40),0,bf
CompPos = CompPos + 10
Line (780,CompPos -50)-(793,CompPos +50),2,bf
Else
End If
'SpielerBewegung:
If Inkey$ = "" Then
Line (20,SpielerPos -50)-(7,SpielerPos +50),2,bf
ElseIF MULTIKEY(&h48) and SpielerPos > 80 Then
SpielerPos = SpielerPos -20
Line (20,SpielerPos -50)-(7,SpielerPos +50),2,bf
Line (20,SpielerPos +72)-(7,SpielerPos +52),0,bf
ElseIF MULTIKEY(&h50) and SpielerPos < 535 Then
SpielerPos = SpielerPos +20
Line (20,SpielerPos -50)-(7,SpielerPos +50),2,bf
Line (20,SpielerPos -72)-(7,SpielerPos -52),0,bf
End If
'BallBewegung:
'Alten Ball loeschen:
Circle (BallPos_x,BallPos_y),20,0, , , , F
'Neue Pos berechnen
BallPos_x = BallPos_x + BallRichtung_x
BallPos_y = BallPos_y + BallRichtung_y
'Neuen Ball zeichnen
Circle (BallPos_x,BallPos_y),20,2, , , , F
'///////////////////////////////////////////////////////////////////////////////
'------Beruehrungen--------------------------------------------------------------
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'Beruehrung mit Comp oder rechter Wand auswerten
If BallPos_x > 749 Then
If BallPos_y < CompPos - 70 or BallPos_y > CompPos + 70 Then
Beep
Beep
Beep
BallRichtung_x = 30
BallRichtung_y = 0
PunkteSpieler = PunkteSpieler + 1
BallPos_x = 400
BallPos_y = 300
Goto Spiel
Else
Ballrichtung_x = -30
BallRichtung_y = (BallPos_y - CompPos) / 2
Beep
End If
End If
'Beruehrung mit Spieler oder linker Wand auswerten:
If BallPos_x < 70 Then
If BallPos_y < SpielerPos - 70 or BallPos_y > SpielerPos + 70 Then
Beep
Beep
Beep
BallRichtung_x = -30
BallRichtung_y = 0
PunkteComp = PunkteComp + 1
BallPos_x = 400
BallPos_y = 300
Goto Spiel
Else
Ballrichtung_x = 30
BallRichtung_y = (BallPos_y - SpielerPos) / 3
Beep
End If
End If
'Beruehrung Mit Wand auswerten:
If BallPos_y < 70 or BallPos_y > 544 Then
BallRichtung_y = BallRichtung_y * -1
Else
End If
'Überpruefen, ob der Spieler Beenden will.
If Inkey$ = "q" Then
Goto Hauptmenue
Else
End If
Goto Anfang
|
Diddus [/code] |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 20.03.2008, 12:26 Titel: |
|
|
Die Steuerung ist sehr hakelig (Multikey verwenden!) und mit ESC oder dem Schließen-Knopf (inkey-code: CHR(255) & "k") kommt man nicht aus dem Spiel raus. sonst ganz nett.
= 2 Punkte (nicht note 2 ), da es einfach zu wenig bietet, als dass ich es höher bewerten könnte. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 20.03.2008, 20:56 Titel: |
|
|
Hi diddus,
der Spielspaß leidet etwas unter der sprunghaften Darstellung.
Das läßt sich aber ändern, als Anregung: Code: | Screen 19,32,,1
Dim As UInteger bg=RGB(20,50,20), fg=RGB(255,255,0)
Color fg,bg
Cls
Dim As Integer breite, hoehe, radius=8
ScreenInfo breite, hoehe
SetMouse 0,0,0
Dim As Integer x=breite\2, y=hoehe\2, xs=3, ys=2
Do
Sleep 1
Circle (x,y),radius,bg,,,,F
x += xs
y += ys
If (x >= breite-radius) Or (x <= radius) Then xs = -xs
If (y >= hoehe -radius) Or (y <= radius) Then ys = -ys
Circle (x,y),radius,fg,,,,F
ScreenSync
Loop Until InKey=Chr(27)'ESC
End | Wenn dir darin Anweisungen unbekannt sind sieh mal in die FB-Referenz (Link: siehe oben bei Sebastian). _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Bauchredner
Anmeldungsdatum: 11.01.2008 Beiträge: 57
|
Verfasst am: 21.03.2008, 15:33 Titel: |
|
|
Super für dein erstes Spiel!
Nur dieser Sound... |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 26.03.2008, 00:20 Titel: |
|
|
Ja, gar nicht mal schlecht. Nur, wie schon gesagt wurde etwas "hakelig". Vielleicht sollte der Ball auch etwas geschmeidiger seine Position ändern.
MfG Caran _________________ Eine Erkenntnis von heute kann die Tochter eines Irrtums von gestern sein. |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 26.03.2008, 16:23 Titel: |
|
|
jupp, hakelig stimmt
ich finde, der pc ist a bissl schwer zu besiegen (oder ich lass den ball nich weit genug an die kanten )
code: 0,5 punkte
spiel an sich, fürs erste spiel: 4 punkte
also insgesamt drei *gg*
der sound, der klingt so wie im kranken haus
piep...piep...piep...piep...piiiiiiiiiiiiiiiiiiiiiieeep NAAIN der patient ist tot xDD _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
|
|
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.
|
|