konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 Nå er jeg blitt god kan vi lage no mere spennende Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 Nå er jeg blitt god kan vi lage no mere avansert :smile: Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 Hmmz det ble bare surr pga bredden. Går det an å få den til å poste bredere? Hvis du ordner det litt så skal det bli fint igjen. Uansett her har du ett lite spill som jeg lagde til deg basert på det jeg sa til deg tidligere. Lag navn på label og timer selv. Label1 = Ditt skip Label2 = Skuddet ditt Label3 = Fiende Timer1 = Hastigheten på ditt skip Timer2 = Hastigheten på skuddet ditt Timer3 = Hastigheten til fienden Før du trykker på kjør så * Opprett 4 labels * Opprett 3 timers * Gå inn på events på formen og dobbeltklikk på OnCreate og OnKeyDown * Gå inn på alle timerene på events og dobbeltklikk på OnTimer Da skal det funke. Bytt ut labels med image hvis du vil ha noen bilder istedetfor, men da må du jo tegne det du skal ha først. Er ikke noe problem å lage bakgrunnsbilde også hvis du vil det. Bare spør hvis du lurer på noe unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure Shoot; procedure Timer3Timer(Sender: TObject); private MoveDirection, ShootDirection: String; // Her oppretter jeg to variabler, en som sier hvilken retning du beveger deg i, og en som sier hvilken retning som skuddet skal bevege seg i CanShoot: Boolean; // Denne variablen passer på når jeg kan skyte og når jeg ikke kan skyte RandomVar, PointsCounter: Integer; // PointsCounter er en variabel som teller poengene OldWidth, OldHeight: integer; // Disse variablene er det den oppløsninga du kjører før du starter spillet legges inn i public end; var Form1: TForm1; implementation {$R *.DFM} function SetScreenResolution(Width, Height: integer): Longint; //Denne funksjonen gjør at spillet kjører i fullscreen var DeviceMode: TDeviceMode; begin with DeviceMode do begin dmSize := SizeOf(TDeviceMode); dmPelsWidth := Width; dmPelsHeight := Height; dmFields := DM_PELSWIDTH or DM_PELSHEIGHT; end; Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY); end; procedure TForm1.FormCreate(Sender: TObject); begin Form1.Left := 0; // Her stiller jeg inn formen slik at den står på riktig plass Form1.Top := 0; Form1.WIdth := 800; Form1.Left := 600; OldWidth := GetSystemMetrics(SM_CXSCREEN); // Her legger jeg inn den oppløsninga som du hadde inn i variablene OldWidth og OldHeight. Så hvis du kjører 1024x768 så blir OldWidth 1024 og OldHeight 768. OldHeight := GetSystemMetrics(SM_CYSCREEN); SetScreenResolution(800, 600); // Her setter jeg oppløsningen til 800x600, du kan godt forandre den men da må du forandre noen tall lenger nede også Form1.Color := clTeal; // Farge på bakgrunnen og diverse andre ting. Det kan du leke med. Label1.Color := ClRed; Label2.Color := ClRed; Label3.Color := ClBlack; Label1.Caption := ''; // Du kan godt skrive inn hvis du vil at en tekst skal komme i det "romskipet" du styrer, eller skuddet eller fienden sitt romskip. Label2.Caption := ''; Label3.Caption := ''; Label4.Caption := '0'; Timer1.Interval := 50; // Her setter jeg hvor raskt mitt skip skal bevege seg Timer2.Interval := 30; // Her setter jeg hvor raskt skuddet mitt skal bevege seg Timer3.Interval := 90; // Her setter jeg hvor raskt fiendens skip skal bevege seg Label1.Width := 80; // Her setter jeg størrelsen på de forskjellige tingene Label2.Width := 7; Label3.Width := 50; Label1.Height := 20; Label2.Height := 7; Label3.Height := 50; CanShoot := True; // Sørger for at jeg kan skyte med engang Form1.HorzScrollBar.Visible := False; // Ofte når skuddet eller andre ting går utenfor formen kommer det scrollbars opp. Dette er irriterende så bør fjernes. Form1.VertScrollBar.Visible := False; Label2.SendToBack; // Her gjør jeg bare slik at skuddet ligger alltid bak skipet Label3.Left := 300; // Her bare plasserer jeg ett par ting Label3.Top := -500; Label4.Left := 750; Label4.Top := 20; Label4.Font.Size := 12; // Setter jeg font size på poeng telleren PointsCounter := 0; // Setter slik at du starter med 0 poeng Form1.DoubleBuffered := True; // Kjekk greie slik at du unngår flimmer, men gjør slik at spillet krever mer ressurser. Dette er ikke merkbart på så små spill som dette. Form1.BorderStyle := bsNone; // Disse tingene bør du sette hvis du skal ha fullscreen. Hvis du experimenterer litt merker du hva de gjør. Form1.WindowState := wsMaximized; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; // Her setter jeg hva de forskjellige tastene gjør Shift: TShiftState); begin case key of vk_up: MoveDirection := 'Up'; vk_down: MoveDirection := 'Down'; vk_left: MoveDirection := 'Left'; vk_right: MoveDirection := 'Right'; vk_space: Shoot; end; end; procedure TForm1.Timer1Timer(Sender: TObject); // Denne timeren er over hvordan skipet beveger seg. begin // Sørger for at romskipet går i den retningen du trykker. if MoveDirection = 'Up' then begin // Hastigheten er 10 som du kan sette høyere hvis du vil at skipet Label1.Top := Label1.Top - 10; end // skal bevege seg raskere else if MoveDirection = 'Down' then begin Label1.Top := Label1.Top + 10; end else if MoveDirection = 'Left' then begin Label1.Left := Label1.Left - 10; end else if MoveDirection = 'Right' then begin Label1.Left := Label1.Left + 10; end; end; procedure TForm1.Timer2Timer(Sender: TObject); // Denne timeren er over skuddet du skyter. begin randomize; // Randomize sørger for at tallet når du benytter deg av random så skal ikke det bli det samme. if ShootDirection = 'Up' then begin // Her gjør jeg slik at skuddet beveger seg i ønsket retning Label2.Top := Label2.Top - 20; end else if ShootDirection = 'Down' then begin Label2.Top := Label2.Top + 20; end else if ShootDirection = 'Left' then begin Label2.Left := Label2.Left - 20; end else if ShootDirection = 'Right' then begin Label2.Left := Label2.Left + 20; end; if (Label2.Top < 0) or (Label2.Top > 600) or (Label2.Left < 0) or (Label2.Left > 800) then // Dette er en if setning som blir sann hvis skuddet går utenfor skjermen begin CanShoot := True; // Og når den blir sann så kan man altså skyte igjen. end; if (Label2.Left > Label3.Left - Label2.Width) and (Label2.Left < Label3.Left + Label3.Width) and (Label2.Top > Label3.Top - Label2.Height) and (Label2.Top < Label3.Top + Label3.Height) then begin // Denne if setningen blir sann når skuddet treffer fienden. inc(PointsCounter); // Da får du ett poeng mer Label4.Caption := inttostr(PointsCounter); // Og det poenget må vises i labelen Label2.Visible := False; // Skuddet blir da ikke lenger synlig Timer3.Interval := Timer3.Interval - 3; // Fienden blir raskere for hver gang du dreper det CanShoot := True; // Og du kan også skyte igjen Randomvar := random(4); // Her lager jeg en random slik at fienden ikke skal starte på samme sted. if Randomvar = 0 then begin Label3.Left := -200; Label3.Top := -200; end else if Randomvar = 1 then begin Label3.Left := 1000; Label3.Top := -200; end else if Randomvar = 2 then begin Label3.Left := -200; Label3.Top := 800; end else if Randomvar = 3 then begin Label3.Left := 1000; Label3.Top := 800; end; end; if (Label1.Left > Label3.Left - Label1.Width) and (Label1.Left < Label3.Left + Label3.Width) and (Label1.Top > Label3.Top - Label1.Height) and (Label1.Top < Label3.Top + Label3.Height) then begin // Denne blir sann hvis fienden treffer deg Label3.Visible := False; // Da blir fienden borte, dette var fordi ellers kom det opp en "bug" på min skjerm Showmessage('Dine poeng ble ' + inttostr(PointsCounter) + '!'); // Poengsummen din kommer opp SetScreenResolution(OldWidth, OldHeight); // Skjerminstillingene blir satt til det du hadde før Application.Terminate; // Spillet avsluttes end; end; procedure TForm1.Timer3Timer(Sender: TObject); // Dette er en timer over fienden. 10 er hastigheten (hvor mange pixler den beveger seg omgangen). begin if Label1.Top < Label3.Top then begin Label3.Top := Label3.Top - 10; end else if Label1.Top > Label3.Top then begin Label3.Top := Label3.Top + 10; end; if Label1.Left < Label3.Left then begin Label3.Left := Label3.Left - 10; end else if Label1.Left > Label3.Left then begin Label3.Left := Label3.Left + 10; end; end; procedure TForm1.Shoot; // Dette skjer altså hver gang du skyter begin if CanShoot = True then begin // Først skjekker den om du kan skyte. Det kan du ikke hvis ett skudd er allerede på skjermen ShootDirection := MoveDirection; // Så sørger den for at du skyter i den retningen som du beveger deg i. Label2.Visible := True; Label2.Top := Label1.Top + round((Label1.Height-Label2.Height)/2); // Her setter jeg høyden på skuddet at den skal være midt på romskipet. Pugg den formelen fordi den får du bruk for masse CanShoot := False; // Nå stiller jeg slik at du ikke kan skyte mer. if (ShootDirection = 'Up') or (ShootDirection = 'Down') then begin Label2.Left := Label1.Left + round((Label1.Width-Label2.Width)/2); // Her setter jeg bredden på skuddet at den skal være midt på romskipet. Samme som den over, bare at her er det bredde istedenfor bredde end else if ShootDirection = 'Left' then begin Label2.Left := Label1.Left; end else if ShootDirection = 'Right' then begin Label2.Left := Label1.Left + Label1.Width; end; end; end; end. Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 Prøv på dette først og så kan jeg kanskje hjelpe deg til å lage noe annet senere. Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 Tussen takk !!!!!!! Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 Bare sørg for at alle kommentarene kommer bak sånne kommenteringstegn som // Det må være på samme linje som // Trallala jeg så en film nettopp som het kåre som var snill ikke slik // Tralllaa jeg så en film nettopp som het kåre som var snill Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 Får det ikke til og funke! når jeg har skrivi koden står det bare feil meldinger! der det står label1.color clred med rød strek over, og sånn ortseter det neover. hva er feil :o Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 Tipper det er de kommentarerene som ødelegger? Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 ok skal sjekke nå men kan det ha noe med at det står begin og end nedover hele Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 Hvis du gir meg mailen så sender jeg det på mail Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 [email protected] Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 Sendt skriv tilbake hvis du får feilmeldinger. Skriv i så fall hva de er... Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 Jiippi det virka tusen takk for all hjelpen din Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 Bare hyggelig hvor mange poeng får du? Du vet hvordan du bruker image og får ett bilde istedenfor romskipet? Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 tja sånn halveis er det ikke bare og bytte ut navnene i imagene med label1 osv.. Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 ja og du vet hvordan du henter ett bilde fra harddisken inn til det image? Bare husk at image må ha samme navn som det som labelen hadde. Faktisk stopper spillet på 30 poeng. En typisk ting som jeg overså. Jaja Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 Hehe Kansje vi skulle fått med noen flere og laget et spill Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 Hehe nå er det slik at jeg og en annen allerede holder på med ett spill. Men jeg kan jo hjelpe deg litt mer. Noe bilspill tar lang tid. Eller det spørs litt hvor bra du skal ha det. Skal bilspillet ha slik at bakgrunnen forandrer seg? Lenke til kommentar
konsept1 Skrevet 20. juli 2003 Forfatter Del Skrevet 20. juli 2003 Stillig jeg har akkurat mekka litt på spillet du ga meg (bare en enkel meny: play, exit game og noen bilder) Lenke til kommentar
SimenAndre Skrevet 20. juli 2003 Del Skrevet 20. juli 2003 mekk litt mer på det a så sender du det tilbake i mailen så jeg får se på det Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå