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:

erstes Game

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  

Wie viele Punkte würdet ihr vergeben
1
25%
 25%  [ 2 ]
2
12%
 12%  [ 1 ]
3
62%
 62%  [ 5 ]
4
0%
 0%  [ 0 ]
5
0%
 0%  [ 0 ]
Stimmen insgesamt : 8

Autor Nachricht
diddus



Anmeldungsdatum: 03.03.2008
Beiträge: 11

BeitragVerfasst am: 20.03.2008, 11:54    Titel: erstes Game Antworten mit Zitat

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 lächeln[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 20.03.2008, 12:26    Titel: Antworten mit Zitat

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 Zunge rausstrecken), 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 20.03.2008, 13:07    Titel: Antworten mit Zitat

=> Thread ins Projektvorstellungsforum verschoben.
_________________

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
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 20.03.2008, 20:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Bauchredner



Anmeldungsdatum: 11.01.2008
Beiträge: 57

BeitragVerfasst am: 21.03.2008, 15:33    Titel: Antworten mit Zitat

Super für dein erstes Spiel!
Nur dieser Sound...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 26.03.2008, 00:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 26.03.2008, 16:23    Titel: Antworten mit Zitat

jupp, hakelig stimmt happy
ich finde, der pc ist a bissl schwer zu besiegen (oder ich lass den ball nich weit genug an die kanten happy)

code: 0,5 punkte happy
spiel an sich, fürs erste spiel: 4 punkte happy
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
Benutzer-Profile anzeigen Private Nachricht 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 -> Projektvorstellungen 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