Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 09.09.2007, 20:52 Titel: Nibbles Klon |
|
|
Ich dachte mir, ich bräuchte mal wieder ein größeres projekt und hab mir für einen nibbles klon entschieden... der steckt noch in den windeln
/edit: problem gelöst!
/edit2: neues problem:
objekt lässt sich nicht "fressen"
/edit 3: Bis viele bugs behoben, bilder und
die aktuellste version ist ab sofort Hier: Klick
zu finden...
jeweils die Exe und den Source _________________ // nicht mehr aktiv //
Zuletzt bearbeitet von The_Muh am 12.09.2007, 15:46, insgesamt 5-mal bearbeitet |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 09.09.2007, 20:58 Titel: |
|
|
Dein Problem ist, dass du EINMAL die Taste abfragst und dann in der unteren Schleife hängst. Probiere mal
Code: | dim as integer x = 200,y = 200
dim as string key, newkey
screenres 400,400
draw string (x,y),"#"
do
newkey = inkey
if newkey <> "" then key = newkey
select case key
[...] |
newkey hat den Sinn, dass key solange erhalten bleibt, bis eine neue Taste gedrückt wird.
(edit: mein Posting bezieht sich natürlich auf eine frühere Version) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 09.09.2007, 21:32 Titel: |
|
|
Zitat: | -Warum zum Henker ist die EXE 100 KB groß!? [MuhEdit] |
Zitat: | weil das 150 zeilen codes sind?!?! [MuhEdit] | (Nur mal zur Info: Ein gewisses Projekt hat ~36 KB src fürs hauptmodul, und die exe ist !!mit!! Icon nur 72 KB groß...)
Zitat: | ein größeres projekt [This] |
Das wird ja immer Besser ein großes Projekt sind also 42-150 Zeilen
[/lachkrampf]
Naja.
-Grafischer "Cursor"
-Sound
-Hintergrundgrafik.
-... _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 09.09.2007, 21:36 Titel: |
|
|
Du hast schon gelesen, dass das Projekt noch in den Windeln steckt?? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 09.09.2007, 21:38 Titel: |
|
|
csderats hat Folgendes geschrieben: |
Naja.
-Grafischer "Cursor"
-Sound
-Hintergrundgrafik.
-... |
ähm... der code ist ne halbe stunde alt!?
was erwartest du?
das ich beim ersten post die version 10.0 release!?!
Ich wollte erstmal das gröbste weg haben, dann mach ich Grafik, sound usw.
Erst denken, dann posten, oder fresse halten!! _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 09.09.2007, 21:40 Titel: |
|
|
Ich glaub, ich bin nicht (mehr) der Einzigster, der der Meinung ist, wir hätten dich hier (http://forum.qbasic.at/viewtopic.php?t=4220) einfach gehen lassen sollen...  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 09.09.2007, 21:41 Titel: |
|
|
Mark Aroni hat Folgendes geschrieben: | Erst denken, dann posten, oder fresse halten!! | Oder Projekte einfach erst dann posten, wenn sie älter als eine halbe Stunde sind. Oder erst wenn sie eine gewisse Reife erreicht haben.
Man könnte auch (ums nicht ganz einfach zu machen) die maximale Geschwindigkeit begrenzen... _________________ If hilfreicher_Beitrag then klick(location.here)
Klick
Zuletzt bearbeitet von csde_rats am 09.09.2007, 21:43, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 09.09.2007, 21:42 Titel: |
|
|
Zitat: |
Wenn man im Glashaus sitzt, sollte man nicht mit Steinen werfen...
|
_________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 09.09.2007, 21:43 Titel: |
|
|
csderats hat Folgendes geschrieben: | Mark Aroni hat Folgendes geschrieben: | Erst denken, dann posten, oder fresse halten!! | Oder Projekte einfach erst dann posten, wenn sie älter als eine halbe Stunde sind. Oder erst wenn sie eine gewisse Reife erreicht haben.  |
Ich hatte ein problem und wollte das NoPaste nich zumüllen, außerdem hätte ich früher oder später eh einen post aufgemacht...
wie gesagt:
erst denken, dann posten... _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 09.09.2007, 22:30 Titel: |
|
|
was optisches: schreibe statt
Code: | case CHR(255,72) : key = newkey
case chr(255,80) : key = newkey
case chr(255,77) : key = newkey
case chr(255,75) : key = newkey |
kürzer
Code: | case chr(255,72), chr(255,80), chr(255,77), chr(255,75) : key = newkey |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 09.09.2007, 22:34 Titel: |
|
|
danke für den tipp, aber ich lass es der übersicht halber so wie ichs habe...
soo neuer code, neues problem... siehe oben (edit ist toll!) _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 09.09.2007, 22:39 Titel: |
|
|
Wegen des if: da mischt du zwei Sachen. Vorschlag:
Zitat: | if ((spielerx-objektx)*(spielerx-objektx) + (spielery-objekty)*(spielery-objekty)) < 20 then |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 10.09.2007, 00:06 Titel: |
|
|
hehe, das kommt davon wenn man nich richtig abschreibt  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 10.09.2007, 14:45 Titel: |
|
|
nemored: fehlt bei dir in der Formel nicht noch das SQR?
Wenn ich mich nicht täusche, sollte es so sein:
Code: | if sqr((spielerx-objektx)^2 + (spielery-objekty)^2)) < 20 then ... |
_________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 10.09.2007, 18:39 Titel: |
|
|
Das sqr ist im Prinzip nicht nötig, dann muss halt die Zahl dahinter bereits die Quadradzahl sein. Ist CPU-technisch sicher sinnvoller. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 10.09.2007, 20:31 Titel: |
|
|
Soo
die erste spielbare version ist fertig... noch ohne Menü oder grafiken bzw. sound...
viel spaß beim spielen und nicht über den source meckern
Code: | dim as integer spielerY(1 to 80)
dim as integer spielerX(1 to 80)
Dim as integer Laenge = 2
dim as integer zeichnen, position, pruefen, punkte
dim as integer objektx
dim as integer objekty
dim as string key, newkey
screenres 400,400
'Bevor das spiel anfängt:
spielerY(1) = 200
spielerY(2) = 208
spielerX(1) = 200
spielerX(2) = 208
draw string (spielerx(1),spielery(1)),chr(219)
randomize timer
objektx = int(rnd*370)+1
objekty = int(rnd*370)+1
draw string (objektx,objekty),"O"
do : sleep 1 : key = inkey : loop until key <> ""
'nach dem ersten tastendruck:
do
locate 1,1 : Print "punkte: "& punkte
for pruefen = 2 to laenge
if spielerX(1) = SpielerX(pruefen+1) and spielerY(1) = spielerY(pruefen+1) then beep : end
next pruefen
'futter:
draw string (objektx,objekty),"O"
if ((spielerX(1)-objektx)*(spielerX(1)-objektx) + (spielerY(1)-objekty)*(spielerY(1)-objekty)) < 100 then
laenge +=1
Punkte += 20 * (laenge/2)
randomize timer
objektx = int(rnd*360)+20
objekty = int(rnd*360)+20
end if
'tastendruck:
newkey = inkey
select case newkey
case CHR(255,72) : if key = chr(255,80) then key = key : else:key = newkey
case chr(255,80) : if key = chr(255,72) then key = key : else:key = newkey
case chr(255,77) : if key = chr(255,75) then key = key : else:key = newkey
case chr(255,75) : if key = chr(255,77) then key = key : else:key = newkey
case chr(27) : end
case Chr(13) : sleep : continue do
end select
'verarbeitung:
select case key
case CHR(255,72) 'oben
spielery(1) -= 8
if spielery(1) = 0 then end
case chr(255,80) 'unten
spielery(1) += 8
if spielery(1) = 392 then end
case chr(255,77) 'rechts
spielerx(1) += 8
if spielerx(1) = 392 then end
case chr(255,75) 'links
spielerx(1) -= 8
if spielerx(1) = 0 then end
end select
sleep 40
cls
select case Key
case CHR(255,72) 'oben
for position = laenge to 1 step -1
spielerX(position+1) = spielerX(position)
spielerY(position+1) = spielerY(position)
next
case chr(255,80) 'unten
for position = laenge to 1 step -1
spielerX(position+1) = spielerX(position)
spielerY(position+1) = spielerY(position)
next
case chr(255,77) 'rechts
for position = laenge to 1 step -1
spielerX(position+1) = spielerX(position)
spielerY(position+1) = spielerY(position)
next
case chr(255,75) 'links
for position = laenge to 1 step -1
spielerX(position+1) = spielerX(position)
spielerY(position+1) = spielerY(position)
next
end select
for zeichnen = 1 to laenge
draw string (spielerx(zeichnen),spielery(zeichnen)),CHR(219)
next zeichnen
loop |
_________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 10.09.2007, 21:56 Titel: |
|
|
Bei mir läuft das Spiel etwas zu schnell..
Steuerung ist ok, aber leider nicht präzise genug, weil es einfach zu schnell läuft.
//Noch ein Edit:
Hardcore Mod: (mit SLEEP 35, aber nur "etwas" schwerer..
Änderungen:
- SLEEP 35 eingefügt, um das Spiel "zuverlangsamen"
- POINT eingefügt, um einen Bug zu beseitigen
- spielerY und SpielerX auf Arrey auf (1 to 99999) gesetzt.. (das dürfte auf jeden Fall reichen xD
- die Länge erhöht sich jetzt jedesmal um 5
- ein Paar kleinere Bugs wurden entfernt
Also hier erstmal meine editierte Version:
So ist das Spiel schon brauchbarer
Code: | dim as integer spielerY(1 to 99999)
dim as integer spielerX(1 to 99999)
Dim as integer Laenge = 2
dim as integer zeichnen, position, pruefen, punkte
dim as integer objektx
dim as integer objekty
dim as string key, newkey
screenres 400,400
'Bevor das spiel anfängt:
spielerY(1) = 200
spielerY(2) = 208
spielerX(1) = 200
spielerX(2) = 208
draw string (spielerx(1),spielery(1)),chr(219)
randomize timer
rtr:
objektx = int(rnd*370)+1
objekty = int(rnd*370)+1
draw string (objektx,objekty),"O"
do : sleep 1 : key = inkey : loop until key <> ""
'nach dem ersten tastendruck:
do
locate 1,1 : Print "punkte: "& punkte
locate 2,1:print "debug: ";laenge
for pruefen = 2 to laenge
if spielerX(1) = SpielerX(pruefen+1) and spielerY(1) = spielerY(pruefen+1) then beep : end
next pruefen
'futter:
draw string (objektx,objekty),"O"
if ((spielerX(1)-objektx)*(spielerX(1)-objektx) + (spielerY(1)-objekty)*(spielerY(1)-objekty)) < 100 then
laenge += 5
Punkte += 20 * (laenge/2)
nochmal1:
randomize timer
objektx = int(rnd*360)+20
objekty = int(rnd*360)+20
if point (objektx+1,objektx+1)=15 then
draw string (objektx,objekty),"O"
goto nochmal1
end if
end if
'tastendruck:
sleep 35
newkey = inkey
select case newkey
case CHR(255,72) : if key = chr(255,80) then key = key : else:key = newkey
case chr(255,80) : if key = chr(255,72) then key = key : else:key = newkey
case chr(255,77) : if key = chr(255,75) then key = key : else:key = newkey
case chr(255,75) : if key = chr(255,77) then key = key : else:key = newkey
case chr(27) : end
case Chr(13) : sleep : continue do
end select
'verarbeitung:
select case key
case CHR(255,72) 'oben
spielery(1) -= 8
if spielery(1) = 0 then end
case chr(255,80) 'unten
spielery(1) += 8
if spielery(1) = 392 then end
case chr(255,77) 'rechts
spielerx(1) += 8
if spielerx(1) = 392 then end
case chr(255,75) 'links
spielerx(1) -= 8
if spielerx(1) = 0 then end
end select
sleep 40
cls
select case Key
case CHR(255,72) 'oben
for position = laenge to 1 step -1
spielerX(position+1) = spielerX(position)
spielerY(position+1) = spielerY(position)
next
case chr(255,80) 'unten
for position = laenge to 1 step -1
spielerX(position+1) = spielerX(position)
spielerY(position+1) = spielerY(position)
next
case chr(255,77) 'rechts
for position = laenge to 1 step -1
spielerX(position+1) = spielerX(position)
spielerY(position+1) = spielerY(position)
next
case chr(255,75) 'links
for position = laenge to 1 step -1
spielerX(position+1) = spielerX(position)
spielerY(position+1) = spielerY(position)
next
end select
for zeichnen = 1 to laenge
draw string (spielerx(zeichnen),spielery(zeichnen)),CHR(219)
next zeichnen
loop |
_________________ Bis irgendwann...  |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 12.09.2007, 14:50 Titel: |
|
|
soo die aktuellste version ist ab sofort Hier: Klick
zu finden...
jeweils die Exe und den Source _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 12.09.2007, 14:55 Titel: |
|
|
ein kleiner steuerungsfehler..
bitte Code: | if laenge < 90 then
sleep 100 - laenge
else
sleep 10
end if |
in zeile 51 verschieben.. und sleep 80 entfernen
dann passts perfeckt  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
|