So, I got an HP Prime today, and I'm going to use this thread as a dumping ground as I do stuff. I made a simple program today. Here's a screenshot:
Code: EXPORT Rects()
BEGIN
Rect();
Local X1,X2,Y1,Y2;
Local Color;
Local ColorR,ColorG,ColorB;
Repeat
X1:=RandInt(0,320);
X2:=RandInt(0,320);
Y1:=RandInt(0,240);
Y2:=RandInt(0,240);
ColorR:=RandInt(255);
ColorG:=RandInt(255);
ColorB:=RandInt(255);
Color:=RGB(ColorR,ColorG,ColorB);
Rect_P(X1,X2,Y1,Y2,Color);
For K From 1 to 100000 Do
End;
Until GetKey≠−1;
END;
Game of Life, here I come!
Wow, now I have a reason to charge my Prime back up
Will be nice to have someone to bug with questions that might actually understand this language, as few others seem to know about it.
I wouldn't say I really understand it, but I can draw rectangles, so that's basically all I need
I see a delay loop in there, is that needed for anything? How much faster does it run without it?
You and Jonimus having HP Primes makes me want one as well :\ Although for OS disassembly work most likely.
The simulator runs quite a bit faster than the hardware, but the hardware is still quite fast. Without the loop in there it's just a crazy mess of rectangles.
http://www.omnimaga.org/hp-prime/tetris-for-the-hp-prime!/?topicseen
I was thinking about looking at some of this code, to see if I could potentially learn something of the language. I think there might be a few other programs there that might help with that, as well
Just a small update, I can draw a grid and move a cursor around:
Good first steps for Game of Life.
There is actually a GoL already on MoHPC, but it would be nice to see what you can come up with yourself. Glad you got an HP Prime by the way!
Yeah, I saw that in the archives, but it's always my go to learning program, so I figured I'd go ahead and give it a shot.
*Bump* Some more progress tonight:
Question to those who may know: Is there a function call to make the buttons? Right now I'm doing it manually with an Icon, Blit_P and TextOut_P.
*Bump* An answer to my question: DrawMenu();
I've been playing with the input stuff today, to try to get screen presses. Previously I was using GetKey, but that just returns a KeyCode. Looking around at documentation and other people's code, and Wait() seemed to be the correct thing. Some places said it returned a number for keyboard and a list for mouse. This is wrong. It always returns a list. Here's where things get even crazier:
- If it's a keyboard event, it returns the keycode as the only input, for example {30} for enter
- For most key events, it returns a list of the form { type, [x, y], [dx, dy] }
These are the types:
0: Mouse Down
1: Mouse Move
2: Mouse Up (x/y is not provided)
3: Mouse Click (note, if a click is detected, there is no MouseUp)
5: Mouse Stretch. x/y is the delta since the last event. dx/dy is the delta since the ORIGINAL mouse
down...
6: Mouse Rotate, x is original angle, y is new angle in 32nd of a circle.
7: Mouse Long Click, This means that the mouse stayed down for 1 second
NOTE THE MOUSE UP! It returns JUST the type. So JUST {2}. This is the SAME VALUE as is returned when the up arrow is pressed. So if the screen is touched and then you get a {2}, there seems to be no way to tell if it's a mouse up or the up arrow... Possibly you could use GetKey to see if the key was pressed. There's also a Mouse() command I've yet to experiment with.
Of course, the other thing to think about is how likely is it that you're going to get a {2} so soon after a mouse down and it not by a mouse up. This is a valid consideration, but it's still something that could happen, and so I don't like it.
I reproduced your first rectangle program on the calculator, reduced the delay to 100. Trippy.
Thanks for the code, going to play with it more when I'm done working
For getting screen presses unambiguously there is also the mouse() command which works pretty similar to the Getkey which you described.
Okay, cool. I mentioned in my post that I'd be experimenting with that command next. Good to have some confirmation that it way be a good way to go. THanks
I know I'm a bit late to this party, but I just wanted to say I'm glad to see another HP Prime developer! I hope you continue to do stuff with the system.
Concerning WAIT's syntax: WAIT(0) and WAIT(-1) do different things, and return different things as well. I suggest you check it out.