Welcome, Guest |
You have to register before you can post on our site.
|
Forum Statistics |
» Members: 37
» Latest member: Ludwig
» Forum threads: 183
» Forum posts: 1,442
Full Statistics
|
Online Users |
There are currently 104 online users. » 0 Member(s) | 102 Guest(s) Bing, Google
|
Latest Threads |
Rectangle (simple physics...
Forum: NaaLaa 7 Code
Last Post: johnno56
03-25-2025, 07:26 PM
» Replies: 3
» Views: 111
|
Some textures
Forum: Everything else
Last Post: 1micha.elok
03-23-2025, 10:24 AM
» Replies: 5
» Views: 197
|
Primitive Angry Bird
Forum: NaaLaa 7 Code
Last Post: 1micha.elok
03-23-2025, 10:18 AM
» Replies: 9
» Views: 530
|
Naalaanoid (another arkan...
Forum: NaaLaa 7 Code
Last Post: Marcus
03-21-2025, 09:55 PM
» Replies: 7
» Views: 327
|
Print Using
Forum: Programming
Last Post: johnno56
03-21-2025, 08:31 PM
» Replies: 4
» Views: 153
|
Bridge (simple physics)
Forum: NaaLaa 7 Code
Last Post: Marcus
03-16-2025, 06:27 PM
» Replies: 3
» Views: 168
|
Mystify
Forum: NaaLaa 7 Code
Last Post: Marcus
03-10-2025, 04:45 PM
» Replies: 7
» Views: 590
|
3d text
Forum: NaaLaa 7 Code
Last Post: 1micha.elok
03-08-2025, 01:12 PM
» Replies: 2
» Views: 276
|
Mystify
Forum: NaaLaa 6 Code
Last Post: johnno56
03-08-2025, 12:19 PM
» Replies: 2
» Views: 258
|
Tree
Forum: NaaLaa 7 Code
Last Post: 1micha.elok
03-07-2025, 03:22 AM
» Replies: 5
» Views: 555
|
|
|
My N6 |
Posted by: johnno56 - 11-16-2023, 07:09 PM - Forum: NaaLaa 6 Questions
- Replies (3)
|
 |
Not really a question... My Linux version of N6 lo longer functions... Oh, it loads and executes programs, except for the fact it no longer recognizes the keyboard... *sigh*
N7 function flawlessly, so it is not a keyboard issue, per se.
As N6 has not been updated in a "dogs age", I can only conclude that, something within Linux has "moved on" and has left N6 behind... I suppose it was only a matter of time really...
Can anyone remember "way back" when the Linux version of N6 was available on the website? Does anyone have a copy of the ".deb" version of N6? I would like to test that version to see if I still have a keyboard issue with N6...
Just had a thought... stop laughing... could it be a keyboard.lib problem? I have my doubts because I have never had any need to change it... thought's gone...
Do not waste a lot of time with this... Just pointing out an issue with N6 that "I" am having... Looks like I may have to get busy and attempt some N6 to N7 conversions... *gulp* (no promises) lol
|
|
|
manage objects automatically |
Posted by: aliensoldier - 11-11-2023, 07:01 PM - Forum: NaaLaa 7 Questions
- Replies (21)
|
 |
I'm going to start from scratch with the last question I asked in the other forum and the answer was not very clear to me.
The code that I am going to show is made in blitzmax 1.50
Code: Type Tpadre
Field x:Int,y:Int;
Global lista:TList = CreateList();
'final es para que el metodo o funcion que lo lleva
'no se pueda sobreescribir desde otra parte
Method New() Final
Self.lista.AddLast(Self);
End Method
'abstract es para que este metodo sea obligatorio
'en todas las clases que hereden de esta
Method pintar() Abstract;
Function pintar_todo() Final
For Local padre:Tpadre = EachIn lista
padre.pintar();
Next
End Function
Method eliminar() Final
lista.Remove(Self);
End Method
Method eliminar_todo() Final
lista.Clear();
End Method
Method avanzar(distancia:Float,angulo:Float) Final
Self.x:+ distancia * Cos(angulo);
Self.y:+ distancia * Sin(angulo);
End Method
Method obtener_distancia:Float(x1:Float,y1:Float,x2:Float,y2:Float) Final
Return Sqr((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
End Method
Method obtener_angulo:Float(x1:Float,x2:Float,y1:Float,y2:Float) Final
Return ATan2(y2-y1,x2-x1);
End Method
End Type
Here it shows the parent class that has a global list, in the "new" method the objects that inherit from this class will be added automatically to the list, the "paint" method is to be used in the other classes, the "paint all" method will loop through the list and display the paint method of all objects, the "delete" method will delete an object from the list and the "delete all" method will delete all objects from the list.
The other methods are mathematical methods for different uses.
Code: Strict;
AutoMidHandle(True);
Include "clasePadre.bmx";
'jugador-----------------------------------------
Type Tjugador Extends Tpadre
Field velocidad:Int,contador:Int;
Field imagen:TImage = LoadImage("jugador.png");
Function Create:Tjugador()
Local jugador:Tjugador = New Tjugador;
jugador.x = 320;
jugador.y = 410;
jugador.velocidad = 5;
Return jugador;
End Function
Method pintar()
SetRotation(0);
Self.mover();
Self.colision();
Self.disparar();
DrawImage(Self.imagen,Self.x,Self.y);
End Method
Method mover()
If(KeyDown(KEY_LEFT) And Self.x > 32)
Self.avanzar(Self.velocidad,180);
ElseIf(KeyDown(KEY_RIGHT) And Self.x < 608)
Self.avanzar(Self.velocidad,0);
End If
If(KeyDown(KEY_UP) And Self.y > 32)
Self.avanzar(Self.velocidad,270);
ElseIf(KeyDown(KEY_DOWN) And Self.y < 448)
Self.avanzar(Self.velocidad,90);
End If
End Method
Method colision()
If(Self.obtener_distancia(Self.x,Self.y,enemigo.x,enemigo.y) < 64)
SetColor(255,255,0);
Else
SetColor(255,255,255);
End If
End Method
Method disparar()
Self.contador:+1;
If(KeyDown(KEY_Z) And Self.contador > 10)
Tdisparo.Create(Self.x,Self.y);
Self.contador = 0;
End If
End Method
End Type
'enemigo----------------------------------------
Type Tenemigo Extends Tpadre
Field contador:Int;
Field angulo:Float;
Field imagen:TImage = LoadImage("enemigo.png");
Function Create:Tenemigo()
Local enemigo:Tenemigo = New Tenemigo;
enemigo.x = 320;
enemigo.y = 64;
Return enemigo;
End Function
Method pintar()
SetRotation(self.angulo);
Self.angulo = Self.obtener_angulo(Self.x,jugador.x,Self.y,jugador.y);
Self.disparar();
DrawImage(Self.imagen,Self.x,Self.y);
End Method
Method disparar()
Self.contador:+ 1;
If(Self.contador > 60)
Tdisparo2.Create(Self.x,Self.y);
Self.contador = 0;
End If
End Method
End Type
'disparo-----------------------------------------
Type Tdisparo Extends Tpadre
Field velocidad:Int = 5;
Field imagen:TImage = LoadImage("disparo.png");
Function Create:Tdisparo(x1:Int,y1:Int)
Local disparo:Tdisparo = New Tdisparo;
disparo.x = x1;
disparo.y = y1;
Return disparo;
End Function
Method pintar()
SetRotation(0);
Self.mover_eliminar();
Self.colision();
DrawImage(Self.imagen,Self.x,Self.y);
End Method
Method mover_eliminar()
Self.y:- Self.velocidad;
If(Self.y < 64)
Self.eliminar();
End If
End Method
Method colision()
If(Self.obtener_distancia(Self.x,Self.y,enemigo.x,enemigo.y) < 64)
Self.eliminar();
End If
End Method
End Type
'disparo-----------------------------------------
Type Tdisparo2 Extends Tpadre
Field velocidad:Int = 5;
Field angulo:Float;
Field imagen:TImage = LoadImage("disparo2.png");
Function Create:Tdisparo2(x1:Int,y1:Int)
Local disparo2:Tdisparo2 = New Tdisparo2;
disparo2.x = x1;
disparo2.y = y1;
disparo2.angulo = disparo2.obtener_angulo(disparo2.x,jugador.x,disparo2.y,jugador.y);
Return disparo2;
End Function
Method pintar()
SetRotation(0);
Self.mover_eliminar();
Self.colision();
DrawImage(Self.imagen,Self.x,Self.y);
End Method
Method mover_eliminar()
Self.avanzar(Self.velocidad,Self.angulo);
If(Self.y > 416 Or Self.x > 576 Or Self.x < 64)
Self.eliminar();
End If
End Method
Method colision()
If(Self.obtener_distancia(Self.x,Self.y,jugador.x,jugador.y) < 64)
Self.eliminar();
End If
End Method
End Type
'------------------------------------------------
'------------------------------------------------
Graphics(640,480);
Global jugador:Tjugador = Tjugador.Create();
Global enemigo:Tenemigo = Tenemigo.Create();
While Not KeyHit(KEY_ESCAPE)
'actualiza todos los objetos
Tpadre.pintar_todo();
Flip();
Cls();
Wend
This is the main file where I have the class player, enemy, player shot and enemy shot and they are inheriting from the parent class to use its methods.
Outside the loop we call the player and enemy objects and in the main loop we call the paint all method of the parent class that will be in charge of updating all the paint methods of the objects.
What I would like to know is how this could be done in Naalaa, I am not looking for it to be the same or similar. What I am looking for is for it to be something similar with similar results within the possibilities that Naalaa offers and for it to be as simple as possible to do.
I don't care that lists or object-oriented programming are not used, I'm just looking for something similar and if it's only with functions then perfect. I'm just looking to learn different ways to do this. If you want the code I'll upload it to try in blitzmax 1.50 which you can download here.
https://nitrologic.itch.io/blitzmax
|
|
|
|