User Inputs in Graphical Applications
Introductory guide on reading text and mouse input functionality.
Written by: Various
Last updated: July 2025
Reading Text in Graphical Applications
Section titled “Reading Text in Graphical Applications”Reading input from users in graphical applications is more complex than using command line inputs, as blocking operations will cause the entire graphical interface to freeze.
With a graphical application, you need to keep redrawing, processing events, updating elements, and refreshing the screen. If you stop doing this to wait for user input, then any dynamic visuals will stop!
Example Code
Section titled “Example Code”Let’s see how to read input from the user using some example code. We can then talk through the different parts to understand how they come together to give you a dynamic application with user input.
#include "splashkit.h"
int main(){ // Lets read into this string... string name = "unknown";
// Open a window to show the user... open_window("Reading Input.", 800, 600);
// Load a font for text rendering load_font("input", "arial.ttf");
// Define area where text should appear rectangle rect = rectangle_from(230.0, 50.0, 200.0, 30.0);
// Start reading text in this area start_reading_text(rect);
// Here is our game loop do { // Listen for input... this will update the text read process_events();
// Click anywhere on the screen to trigger the text input if (mouse_clicked(LEFT_BUTTON)) { // Start reading text in the rectagle area start_reading_text(rect); }
// Looks like we finished reading text... if (not reading_text()) { // Was input cancelled? if (text_entry_cancelled()) { name = "unknown"; } else { // Get the name from the text input name = text_input(); } }
// Draw the screen... clear_screen(COLOR_WHITE); draw_rectangle(COLOR_BLACK, rect);
// If we are reading text... then show what it is if (reading_text()) { draw_collected_text(COLOR_BLACK, font_named("input"), 18, option_defaults()); }
// Draw text instructions draw_text("Click anywhere to start reading text", COLOR_RED, font_named("input"), 18, 200, 100);
// Draw what we have in the name draw_text(name, COLOR_BLACK, font_named("input"), 18, 10, 10);
// Show it.. refresh_screen(60); } while (!quit_requested());
close_all_windows(); return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
// Let's read into this string...string name = "unknown";
// Open a window to show the user...OpenWindow("Reading Input.", 800, 600);
// Load a font for text renderingLoadFont("input", "arial.ttf");
// Define the area where text should appearRectangle rect = RectangleFrom(230.0, 50.0, 200.0, 30.0);
// Start reading text in this areaStartReadingText(rect);
// Here is our game loopdo{ // Listen for input... this will update the text read ProcessEvents();
// Click anywhere on the screen to trigger the text input if (MouseClicked(MouseButton.LeftButton)) { // Start reading text in the rectagle area StartReadingText(rect); }
// Looks like we finished reading text... if (!ReadingText()) { // Was input canceled? if (TextEntryCancelled()) { name = "unknown"; } else { // Get the name from the text input name = TextInput(); } }
// Draw the screen... ClearScreen(ColorWhite()); DrawRectangle(ColorBlack(), rect);
// If we are reading text... then show what it is if (ReadingText()) { DrawCollectedText(ColorBlack(), FontNamed("input"), 18, OptionDefaults()); }
// Draw text instructions DrawText("Click anywhere to start reading text", Color.Red, SplashKit.FontNamed("input"), 18, 200, 100);
// Draw what we have in the name DrawText(name, ColorBlack(), FontNamed("input"), 18, 10, 10);
// Show it... RefreshScreen(60);} while (!QuitRequested());
CloseAllWindows();
using SplashKitSDK;
namespace ReadingInput{ public class Program { public static void Main() { // Let's read into this string... string name = "unknown";
// Open a window to show the user... Window window = new Window("Reading Input.", 800, 600);
// Load a font for text rendering Font font = new Font("input", "arial.ttf");
// Define the area where text should appear Rectangle rect = SplashKit.RectangleFrom(230.0, 50.0, 200.0, 30.0);
// Start reading text in the rectagle area SplashKit.StartReadingText(rect);
// Here is our game loop do { // Listen for input... this will update the text read SplashKit.ProcessEvents();
// Click anywhere on the screen to trigger the text input if (SplashKit.MouseClicked(MouseButton.LeftButton)) { // Start reading text in the rectagle area SplashKit.StartReadingText(rect); }
// Looks like we finished reading text... if (!SplashKit.ReadingText()) { // Was input canceled? if (SplashKit.TextEntryCancelled()) { name = "unknown"; } else { // Get the name from the text input name = SplashKit.TextInput(); } }
// Draw the screen... window.Clear(Color.White); window.DrawRectangle(Color.Black, rect);
// If we are reading text... then show what it is if (SplashKit.ReadingText()) { SplashKit.DrawCollectedText(Color.Black, font, 18, SplashKit.OptionDefaults()); }
// Draw text instructions window.DrawText("Click anywhere to start reading text", Color.Red, font, 18, 200, 100);
// Draw what we have in the name window.DrawText(name, Color.Black, font, 18, 10, 10);
// Show it... window.Refresh(60); } while (!window.CloseRequested);
SplashKit.CloseAllWindows(); } }}
from splashkit import *
# Lets read into this string...name = "unknown"
# Open a window to show the user...open_window("Reading Input.", 800, 600)
# Load a font for text renderingload_font("input", "arial.ttf")
# Define area where text should appearrect = rectangle_from(230.0, 50.0, 200.0, 30.0)
# Start reading text in this areastart_reading_text(rect)
# Here is our game loopwhile not quit_requested():
# Listen for input... thiss will update the text read process_events()
# Click anywhere on the screen to trigger the text input if (mouse_clicked(MouseButton.left_button)): # Start reading text in the rectagle area start_reading_text(rect)
# Looks like we finished reading text... if not reading_text(): # Was input cancelled if text_entry_cancelled(): name = "unknown" else: # Get the name from the text input name = text_input()
# Draw the screen... clear_screen(color_white()) draw_rectangle_record(color_black(), rect)
# If we are reading text... then show what it is if reading_text(): draw_collected_text(color_black(), font_named("input"), 18, option_defaults())
# Draw text instructions draw_text("Click anywhere to start reading text", color_red(), font_named("input"), 18, 200, 100)
# Draw what we have in the name draw_text(name, color_black(), font_named("input"), 18, 10, 10)
# Show it... refresh_screen_with_target_fps(60)
close_all_windows()
Understanding the code
Section titled “Understanding the code”-
In the above program we want to read in the user’s name and store it in the
name
variable. To get started with this we need to open a window and load a font to draw the text and input. There is also the standard event loop that repeats the basic actions of checking user input and drawing the screen until the program is closed. -
The logic for reading input starts with the call to Start Reading Text. This tells SplashKit that you want it to collect text input by the user, and that you want it drawn into the passed-in Rectangle (in this case
rect
). SplashKit is now listening for input from, and collecting this text for you when you call Process Events. -
SplashKit will continue reading text from the user until they hit the Escape or Enter key. You can check if text is still being read by calling the Reading Text function. In this example, we use this to update the name. You can also end text input yourself using the End Reading Text function.
-
When the SplashKit is no longer reading text, you can use Text Entry Cancelled to check if the user cancelled (by hitting Escape) the input. To read the actual value entered, you call Text Input. This will return the value entered by the user. If they did cancel the input, then this will be an empty string.
-
The key with graphical input will be to keep updating the data associated with the graphical elements. This will keep the screen updating as you collect the input from the user. For this, you need to Start Reading Text, then at some point collect the Text Input and End Reading Text.
Using Mouse Inputs in Graphical Applications
Section titled “Using Mouse Inputs in Graphical Applications”Mouse Button Functionality
Section titled “Mouse Button Functionality”Here are some functions that are used to handle mouse button inputs. These functions all use SplashKit’s Mouse Button data type for the argument and check if the specified button has been clicked, held down, or released.
List of Mouse Button Enum Values
Section titled “List of Mouse Button Enum Values”Mouse Button is an enumeration used by SplashKit to read inputs from the mouse. Understanding how to handle mouse buttons is crucial for developers who want users to control their programs using the mouse.
Description | Enum Value in Code |
---|---|
No mouse button | NO_BUTTON |
The left mouse button | LEFT_BUTTON |
The middle mouse button | MIDDLE_BUTTON |
The right mouse button | RIGHT_BUTTON |
The x1 mouse button | MOUSE_X1_BUTTON |
The x2 mouse button | MOUSE_X2_BUTTON |
Description | Enum Value in Code |
---|---|
No mouse button | MouseButton.NoButton |
The left mouse button | MouseButton.LeftButton |
The middle mouse button | MouseButton.MiddleButton |
The right mouse button | MouseButton.RightButton |
The x1 mouse button | MouseButton.MouseX1Button |
The x2 mouse button | MouseButton.MouseX2Button |
Description | Enum Value in Code |
---|---|
No mouse button | MouseButton.no_button |
The left mouse button | MouseButton.left_button |
The middle mouse button | MouseButton.middle_button |
The right mouse button | MouseButton.right_button |
The x1 mouse button | MouseButton.mouse_x1_button |
The x2 mouse button | MouseButton.mouse_x2_button |
Mouse Clicked
Section titled “Mouse Clicked”Mouse Clicked is a boolean function that checks if the specified Mouse Button
has been clicked since the last time Process Events was called.
Here is a simple example using the left and right mouse buttons:
#include "splashkit.h"
int main(){ open_window("Mouse Inputs", 800, 600);
while (!window_close_requested("Mouse Inputs")) { // process user input events process_events();
// change screen colour to red if left mouse button is clicked if (mouse_clicked(LEFT_BUTTON)) { clear_screen(COLOR_RED); } // change screen colour to yellow if right mouse button is clicked else if (mouse_clicked(RIGHT_BUTTON)) { clear_screen(COLOR_YELLOW); }
refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
OpenWindow("Mouse Inputs", 800, 600);
while (!WindowCloseRequested("Mouse Inputs")){ // process user input events ProcessEvents();
// change screen colour to red if left mouse button is clicked if (MouseClicked(MouseButton.LeftButton)) { ClearScreen(ColorRed()); } // change screen colour to yellow if right mouse button is clicked else if (MouseClicked(MouseButton.RightButton)) { ClearScreen(ColorYellow()); }
RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseInputs{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Inputs", 800, 600);
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
if (SplashKit.MouseClicked(MouseButton.LeftButton)) { SplashKit.ClearScreen(Color.Red); } else if (SplashKit.MouseClicked(MouseButton.RightButton)) { SplashKit.ClearScreen(Color.Yellow); }
SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
COLOR_RED = color_red()COLOR_YELLOW = color_yellow()COLOR_WHITE = color_white()
def main():
win = open_window("Mouse Inputs", 800, 600)
current_color = COLOR_WHITE
# Main loop while not window_close_requested(win): # Process user input events process_events()
# Check mouse click status and change screen color if mouse_clicked(MouseButton.left_button):
current_color = COLOR_RED # Change color to red elif mouse_clicked(MouseButton.right_button):
current_color = COLOR_YELLOW # Change color to yellow
# Clear screen with the current color clear_screen(current_color)
refresh_window(win)
close_window(win)
if __name__ == "__main__": main()
Mouse Down
Section titled “Mouse Down”Mouse Down checks if the specified button is being held down.
Here is a simple example using the left and right mouse buttons:
#include "splashkit.h"
int main(){ open_window("Mouse Inputs", 800, 600);
while (!window_close_requested("Mouse Inputs")) { // process user input events process_events();
// change screen colour to red if left mouse button is held down if (mouse_down(LEFT_BUTTON)) { clear_screen(COLOR_RED); } // change screen colour to yellow if right mouse button is held down else if (mouse_down(RIGHT_BUTTON)) { clear_screen(COLOR_YELLOW); } // change screen colour to white if no mouse button held down else { clear_screen(COLOR_WHITE); } refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
OpenWindow("Mouse Inputs", 800, 600);
while (!WindowCloseRequested("Mouse Inputs")){ // process user input events ProcessEvents();
// change screen colour to red if left mouse button is held down if (MouseDown(MouseButton.LeftButton)) { ClearScreen(ColorRed()); } // change screen colour to yellow if right mouse button is held down else if (MouseDown(MouseButton.RightButton)) { ClearScreen(ColorYellow()); } // change screen colour to white if no mouse button held down else { ClearScreen(ColorWhite()); }
RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseInputs{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Inputs", 800, 600);
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
if (SplashKit.MouseDown(MouseButton.LeftButton)) { SplashKit.ClearScreen(Color.Red); } else if (SplashKit.MouseDown(MouseButton.RightButton)) { SplashKit.ClearScreen(Color.Yellow); } else { SplashKit.ClearScreen(Color.White); }
SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
COLOR_RED = color_red()COLOR_YELLOW = color_yellow()COLOR_WHITE = color_white()
def main():
window = open_window("Mouse Inputs", 800, 600)
current_color = COLOR_WHITE
while not window_close_requested(window): # Process user input events process_events()
# Check mouse button status and change screen color if mouse_down(MouseButton.left_button):
current_color = COLOR_RED # Change color to red elif mouse_down(MouseButton.right_button):
current_color = COLOR_YELLOW # Change color to yellow else: current_color = COLOR_WHITE # Default color if no mouse button is held down
clear_screen(current_color)
refresh_window(window)
# Close the window close_window(window)
if __name__ == "__main__": main()
Mouse Up
Section titled “Mouse Up”Opposite to the previous function, Mouse Up checks if the specified button is released.
Here is a simple example using the left mouse button:
#include "splashkit.h"
int main(){ open_window("Mouse Inputs", 800, 600);
while (!window_close_requested("Mouse Inputs")) { // process user input events process_events();
// change screen colour to red if left mouse button is not pressed if (mouse_up(LEFT_BUTTON)) { clear_screen(COLOR_RED); } // change screen colour to white if left button is pressed else { clear_screen(COLOR_WHITE); }
refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
OpenWindow("Mouse Inputs", 800, 600);
while (!WindowCloseRequested("Mouse Inputs")){ // process user input events ProcessEvents();
// change screen colour to red if left mouse button is not pressed if (MouseUp(MouseButton.LeftButton)) { ClearScreen(ColorRed()); } // change screen colour to white if left button is pressed else { ClearScreen(ColorWhite()); }
RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseInputs{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Inputs", 800, 600);
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
if (SplashKit.MouseUp(MouseButton.LeftButton)) { SplashKit.ClearScreen(Color.Red); } else { SplashKit.ClearScreen(Color.White); }
SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
COLOR_RED = color_red()COLOR_WHITE = color_white()
def main():
window = open_window("Mouse Inputs", 800, 600)
while not window_close_requested(window): # Process user input events process_events()
# Change screen color to red if the left mouse button is not pressed if not mouse_down(MouseButton.left_button): clear_screen(COLOR_RED) # Change screen color to white if the left button is pressed else: clear_screen(COLOR_WHITE)
refresh_window(window)
close_window(window)
if __name__ == "__main__": main()
Mouse Movement Functionality
Section titled “Mouse Movement Functionality”Another thing we can do with mouse input, other than checking button presses, is to check mouse movement in the program.
Mouse Movement
Section titled “Mouse Movement”Mouse Movement is a function that returns the amount of accumulated mouse movement since the last time Process Events
was called. It returns the value as a Vector 2D
data type, which shows the direction and distance in the x and y scale.
Here is an example using the left mouse button combined with horizontal movement to change the hue of the screen colour, and the right mouse button combined with vertical movement to change the saturation of the screen colour:
#include "splashkit.h"
int main(){ // colour variables double hue = 0.8; double saturation = 0.8; double brightness = 0.8;
// mouse movement variable vector_2d movement;
open_window("Mouse Movement", 800, 600);
while (!window_close_requested("Mouse Movement")) { // process user input events process_events();
// store the mouse movement direction and distance to the movement variable movement = mouse_movement();
// change screen colour 'hue' if left mouse button is held down if (mouse_down(LEFT_BUTTON)) { // change hue of screen colour based on horizontal mouse movement hue += movement.x / screen_width(); } // change screen colour 'saturation' if right mouse button is held down if (mouse_down(RIGHT_BUTTON)) { // change saturation of screen colour based on vertical mouse movement saturation += movement.y / screen_height(); }
// display current screen colour clear_screen(hsb_color(hue, saturation, brightness)); refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
// colour variablesdouble hue = 0.8;double saturation = 0.8;double brightness = 0.8;
// mouse movement variableVector2D movement;
OpenWindow("Mouse Movement", 800, 600);
while (!WindowCloseRequested("Mouse Movement")){ // process user input events ProcessEvents();
// store the mouse movement direction and distance to the movement variable movement = MouseMovement();
// change screen colour 'hue' if left mouse button is held down if (MouseDown(MouseButton.LeftButton)) { // change hue of screen colour based on horizontal mouse movement hue += movement.X / ScreenWidth(); } // change screen colour 'saturation' if right mouse button is held down if (MouseDown(MouseButton.RightButton)) { // change saturation of screen colour based on vertical mouse movement saturation += movement.Y / ScreenHeight(); }
// display current screen colour ClearScreen(HSBColor(hue, saturation, brightness)); RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseMovement{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Movement", 800, 600); double hue = 0.8; double saturation = 0.8; double brightness = 0.8;
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
Vector2D movement = SplashKit.MouseMovement();
if (SplashKit.MouseDown(MouseButton.LeftButton)) { hue += movement.X / SplashKit.ScreenWidth(); }
if (SplashKit.MouseDown(MouseButton.RightButton)) { saturation += movement.Y / SplashKit.ScreenHeight(); }
SplashKit.ClearScreen(SplashKit.HSBColor(hue, saturation, brightness));
SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
def main():
hue = 0.8 saturation = 0.8 brightness = 0.8
window = open_window("Mouse Movement", 800, 600)
while not window_close_requested(window):
process_events()
# Get the mouse movement movement = mouse_movement()
# Update hue and saturation based on mouse movement if mouse_down(MouseButton.left_button): # Adjust hue based on horizontal mouse movement hue = (hue + movement.x / window_width(window)) % 1.0
if mouse_down(MouseButton.right_button): # Adjust saturation based on vertical mouse movement saturation = min(max(saturation + movement.y / window_height(window), 0.0), 1.0)
# Create the color using HSB values color = hsb_color(hue, saturation, brightness)
# Clear the screen with the new color clear_screen(color)
refresh_window(window)
close_window(window)
if __name__ == "__main__": main()
Mouse Wheel Scroll
Section titled “Mouse Wheel Scroll”Mouse Wheel Scroll returns the distance and direction of the mouse scroll since the last time Process Events
was called. Like the previous function, this function returns the Vector 2D
data type.
Here is an example using vertical scrolling to change the hue of the screen colour:
#include "splashkit.h"
int main(){ // color variables double hue = 0.6; double saturation = 0.6; double brightness = 0.6;
// mouse scroll variable vector_2d scroll;
open_window("Mouse Scrolling", 800, 600);
while (!window_close_requested("Mouse Scrolling")) { // process user input events process_events();
// store the mouse wheel scroll direction and distance to the scroll variable scroll = mouse_wheel_scroll();
// change hue of screen colour based on vertical mouse scrolling (two fingers if using trackpad) hue += scroll.y / 100;
// display current screen colour clear_screen(hsb_color(hue, saturation, brightness)); refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
// color variablesdouble hue = 0.6;double saturation = 0.6;double brightness = 0.6;
// mouse scroll variableVector2D scroll;
OpenWindow("Mouse Scrolling", 800, 600);
while (!WindowCloseRequested("Mouse Scrolling")){ // process user input events ProcessEvents();
// store the mouse wheel scroll direction and distance to the scroll variable scroll = MouseWheelScroll();
// change hue of screen colour based on vertical mouse scrolling (two fingers if using trackpad) hue += scroll.Y / 100;
// display current screen colour ClearScreen(HSBColor(hue, saturation, brightness)); RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseScrolling{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Scrolling", 800, 600); double hue = 0.6; double saturation = 0.6; double brightness = 0.6;
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
Vector2D scroll = SplashKit.MouseWheelScroll();
hue += scroll.Y / 100.0;
SplashKit.ClearScreen(SplashKit.HSBColor(hue, saturation, brightness)); SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
def main():
hue = 0.6 saturation = 0.6 brightness = 0.6
window = open_window("Mouse Scrolling", 800, 600)
while not window_close_requested(window): # Process user input events process_events()
# Store the mouse wheel scroll direction and distance to the scroll variable scroll = mouse_wheel_scroll()
# Change hue of screen color based on vertical mouse scrolling hue += scroll.y / 100.0
# Ensure hue is within the valid range [0.0, 1.0] hue = min(max(hue, 0.0), 1.0)
# Display current screen color clear_screen(hsb_color(hue, saturation, brightness)) refresh_window(window)
close_window(window)
if __name__ == "__main__": main()
Mouse Location Functionality
Section titled “Mouse Location Functionality”Now that we have learned how to handle mouse inputs and movements, let’s look at how to use the mouse’s location in the window, which can be used in your program to make the experience more interactive. Combined with the mouse input functions, it can be used to spawn items where the player clicked or respond to the player clicking where an item is located.
Mouse Position
Section titled “Mouse Position”Mouse Position returns the position of the mouse in the current window as a Point 2d data type, which is its x and y coordinates.
Here is a simple example that draws a circle at the mouse position:
#include "splashkit.h"
int main(){ open_window("Mouse Location", 800, 600);
while (!window_close_requested("Mouse Location")) { // process user input events process_events();
// draw blue circle at mouse position clear_screen(COLOR_WHITE); fill_circle(COLOR_LIGHT_BLUE, circle_at(mouse_position(), 20)); refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
OpenWindow("Mouse Location", 800, 600);
while (!WindowCloseRequested("Mouse Location")){ // process user input events ProcessEvents();
// draw blue circle at mouse position ClearScreen(ColorWhite()); FillCircle(ColorLightBlue(), CircleAt(MousePosition(), 20)); RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseLocation{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Location", 800, 600);
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
SplashKit.ClearScreen(Color.White);
Point2D mousePosition = SplashKit.MousePosition(); SplashKit.FillCircle(Color.LightBlue, mousePosition.X, mousePosition.Y, 20);
SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
def main():
window = open_window("Mouse Location", 800, 600)
while not window_close_requested(window): # Process user input events process_events()
# Clear the screen with white color clear_screen(color_white())
# Get the current mouse position mouse_pos = mouse_position()
# Draw a blue circle at the current mouse position fill_circle(color_light_blue(), mouse_pos.x, mouse_pos.y, 20)
refresh_window(window)
close_window(window)
if __name__ == "__main__": main()
Mouse Position Vector
Section titled “Mouse Position Vector”Mouse Position Vector returns the position of the mouse relative to the window origin as a Vector 2d.
Here is a simple example that displays the mouse position vector as a line:
#include "splashkit.h"
int main(){ open_window("Mouse Location", 800, 600);
while (!window_close_requested("Mouse Location")) { // process user input events process_events();
// draw line from mouse position vector clear_screen(COLOR_WHITE); draw_line(COLOR_BLUE, line_from(mouse_position_vector())); refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
OpenWindow("Mouse Location", 800, 600);
while (!WindowCloseRequested("Mouse Location")){ // process user input events ProcessEvents();
// draw line from mouse position vector ClearScreen(ColorWhite()); DrawLine(ColorBlue(), LineFrom(MousePositionVector())); RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseLocation{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Location", 800, 600);
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
SplashKit.ClearScreen(Color.White); SplashKit.DrawLine(Color.Blue, SplashKit.LineFrom(SplashKit.MousePositionVector())); SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
def main():
window = open_window("Mouse Location", 800, 600)
while not window_close_requested(window): # Process user input events process_events()
# Clear the screen with white color clear_screen(color_white())
# Get the current mouse position mouse_pos = mouse_position_vector()
# Draw a line from the top-left corner to the current mouse position draw_line(color_blue(), 0, 0, mouse_pos.x, mouse_pos.y)
refresh_window(window)
close_window(window)
if __name__ == "__main__": main()
Mouse X
Section titled “Mouse X”Mouse X returns the distance of the mouse from the left edge of the window.
Here is an example using the left mouse button to drag a “curtain” across the screen from the left side, based on the mouse’s x coordinate:
#include "splashkit.h"
int main(){ float x = 0;
open_window("Mouse Location", 800, 600);
while (!window_close_requested("Mouse Location")) { // process user input events process_events();
if (mouse_down(LEFT_BUTTON)) { x = mouse_x(); }
clear_screen(COLOR_WHITE); fill_circle(COLOR_BLUE, 400, 300, 100); // draw purple "curtain" from left side of screen to x coordinate of mouse fill_rectangle(COLOR_PURPLE, 0, 0, x, screen_height()); refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
float x = 0;
OpenWindow("Mouse Location", 800, 600);
while (!WindowCloseRequested("Mouse Location")){ // process user input events ProcessEvents();
if (MouseDown(MouseButton.LeftButton)) { x = MouseX(); }
ClearScreen(ColorWhite()); FillCircle(ColorBlue(), 400, 300, 100); // draw purple "curtain" from left side of screen to x coordinate of mouse FillRectangle(ColorPurple(), 0, 0, x, ScreenHeight()); RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseLocation{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Location", 800, 600); float x = 0;
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
if (SplashKit.MouseDown(MouseButton.LeftButton)) { x = SplashKit.MouseX(); }
SplashKit.ClearScreen(Color.White); SplashKit.FillCircle(Color.Blue, 400, 300, 100); SplashKit.FillRectangle(Color.Purple, 0, 0, x, SplashKit.ScreenHeight()); SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
def main(): x = 0
window = open_window("Mouse Location", 800, 600)
while not window_close_requested(window): # Process user input events process_events()
# Update x-coordinate if the left mouse button is down if mouse_down(MouseButton.left_button): x = mouse_x()
# Clear the screen with white color clear_screen(color_white())
# Draw a blue circle at the center of the screen fill_circle(color_blue(), 400, 300, 100)
# Draw a purple "curtain" from the left side of the screen to the x-coordinate of the mouse fill_rectangle(color_purple(), 0, 0, x, window_height(window))
refresh_window(window)
close_window(window)
if __name__ == "__main__": main()
Mouse Y
Section titled “Mouse Y”Mouse Y returns the distance of the mouse from the top edge of the window.
Here is an example using the left mouse button to drag a “curtain/blind” down the screen from the top, based on the mouse’s y coordinate:
#include "splashkit.h"
int main(){ float y = 0;
open_window("Mouse Location", 800, 600);
while (!window_close_requested("Mouse Location")) { // process user input events process_events();
if (mouse_down(LEFT_BUTTON)) { y = mouse_y(); }
clear_screen(COLOR_WHITE); fill_circle(COLOR_BLUE, 400, 300, 100); // draw purple "curtain" from top of screen to y coordinate of mouse fill_rectangle(COLOR_PURPLE, 0, 0, screen_width(), y); refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
float y = 0;
OpenWindow("Mouse Location", 800, 600);
while (!WindowCloseRequested("Mouse Location")){ // process user input events ProcessEvents();
if (MouseDown(MouseButton.LeftButton)) { y = MouseY(); }
ClearScreen(ColorWhite()); FillCircle(ColorBlue(), 400, 300, 100); // draw purple "curtain" from top of screen to y coordinate of mouse FillRectangle(ColorPurple(), 0, 0, ScreenWidth(), y); RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseLocation{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Location", 800, 600); float y = 0;
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
if (SplashKit.MouseDown(MouseButton.LeftButton)) { y = SplashKit.MouseY(); }
SplashKit.ClearScreen(Color.White); SplashKit.FillCircle(Color.Blue, 400, 300, 100); SplashKit.FillRectangle(Color.Purple, 0, 0, SplashKit.ScreenWidth(), y); SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
def main(): y = 0
window = open_window("Mouse Location", 800, 600)
while not window_close_requested(window): # Process user input events process_events()
if mouse_down(MouseButton.left_button): y = mouse_y()
# Clear the screen with white color clear_screen(color_white())
# Draw a blue circle at the center of the screen fill_circle(color_blue(), 400, 300, 100)
# Draw a purple "curtain" from the top of the screen to the y-coordinate of the mouse fill_rectangle(color_purple(), 0, 0, window_width(window), y)
refresh_window(window)
close_window(window)
if __name__ == "__main__": main()
Mouse Visibility
Section titled “Mouse Visibility”Finally, we can also alter the mouse visibility on SplashKit. The following functions handles the mouse visibility. These can be useful to create a more immersive environment for your game.
Hide/Show Mouse
Section titled “Hide/Show Mouse”Hide Mouse hides the mouse from the screen. Show Mouse shows the mouse to the screen.
Here is a simple example where the mouse “disappears in a black hole”:
#include "splashkit.h"
int main(){ // create cirle variable for "black hole" circle blackHole;
open_window("Mouse Visibility", 800, 600);
// create black hole in centre of screen blackHole = circle_at(screen_center(), 50);
while (!window_close_requested("Mouse Visibility")) { // process user input events process_events();
// mouse disappears in black hole if (point_in_circle(mouse_position(), blackHole)) { hide_mouse(); } // mouse reappears once out of black hole else { show_mouse(); }
// display "black hole" on screen clear_screen(COLOR_WHITE); fill_circle(COLOR_BLACK, blackHole); refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
// create cirle variable for "black hole"Circle blackHole;
OpenWindow("Mouse Visibility", 800, 600);
// create black hole in centre of screenblackHole = CircleAt(ScreenCenter(), 50);
while (!WindowCloseRequested("Mouse Visibility")){ // process user input events ProcessEvents();
// mouse disappears in black hole if (PointInCircle(MousePosition(), blackHole)) { HideMouse(); } // mouse reappears once out of black hole else { ShowMouse(); }
// display "black hole" on screen ClearScreen(ColorWhite()); FillCircle(ColorBlack(), blackHole); RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseVisibility{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Visibility", 800, 600); Circle blackHole = SplashKit.CircleAt(SplashKit.ScreenCenter(), 50);
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
if (SplashKit.PointInCircle(SplashKit.MousePosition(), blackHole)) { SplashKit.HideMouse(); } else { SplashKit.ShowMouse(); }
SplashKit.ClearScreen(Color.White); SplashKit.FillCircle(Color.Black, blackHole); SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
def main():
black_hole_radius = 50 window_width, window_height = 800, 600 window = open_window("Mouse Visibility", window_width, window_height)
black_hole_center = point_at(window_width / 2, window_height / 2)
while not window_close_requested(window): # Process user input events process_events()
# Get the current mouse position mouse_pos = mouse_position()
# Calculate distance from the mouse to the black hole center dx = mouse_pos.x - black_hole_center.x dy = mouse_pos.y - black_hole_center.y distance = (dx ** 2 + dy ** 2) ** 0.5
# Hide or show the mouse based on distance if distance <= black_hole_radius: hide_mouse() else: show_mouse()
# Clear the screen with white color clear_screen(color_white())
# Draw the black hole as a circle fill_circle(color_black(), black_hole_center.x, black_hole_center.y, black_hole_radius)
refresh_window(window)
close_all_windows()
if __name__ == "__main__": main()
Show Mouse
Section titled “Show Mouse”There are two versions of the Show Mouse function. The first version is shown above. The second version shows or hides the mouse based on its boolean parameter. If true, it shows the mouse, while if false, it hides the mouse from the screen.
Here is a simple example where the mouse is only visible in the “spot light”:
#include "splashkit.h"
int main(){ // create cirle variable for emulating a "stage spot light" circle spotLight;
open_window("Mouse Visibility", 800, 600);
// create a "spot light" circle in centre of screen spotLight = circle_at(screen_center(), 100);
while (!window_close_requested("Mouse Visibility")) { // process user input events process_events();
// mouse disappears when not in the "spot light" show_mouse(point_in_circle(mouse_position(), spotLight));
// display "spot light" on screen clear_screen(COLOR_BLACK); fill_circle(COLOR_ALICE_BLUE, spotLight); refresh_screen(60); }
close_all_windows();
return 0;}
using SplashKitSDK;using static SplashKitSDK.SplashKit;
// create cirle variable for emulating a "stage spot light"Circle spotLight;
OpenWindow("Mouse Visibility", 800, 600);
// create a "spot light" circle in centre of screenspotLight = CircleAt(ScreenCenter(), 100);
while (!WindowCloseRequested("Mouse Visibility")){ // process user input events ProcessEvents();
// mouse disappears when not in the "spot light" ShowMouse(PointInCircle(MousePosition(), spotLight));
// display "spot light" on screen ClearScreen(ColorBlack()); FillCircle(ColorWhite(), spotLight); RefreshScreen(60);}
CloseAllWindows();
using SplashKitSDK;
namespace MouseVisibility{ public class Program { public static void Main() { Window window = SplashKit.OpenWindow("Mouse Visibility", 800, 600); Circle spotLight = SplashKit.CircleAt(SplashKit.ScreenCenter(), 100);
while (!SplashKit.WindowCloseRequested(window)) { SplashKit.ProcessEvents();
bool isMouseInSpotLight = SplashKit.PointInCircle(SplashKit.MousePosition(), spotLight); SplashKit.ShowMouse(isMouseInSpotLight);
SplashKit.ClearScreen(Color.Black); SplashKit.FillCircle(Color.White, spotLight); SplashKit.RefreshScreen(60); }
SplashKit.CloseAllWindows(); } }}
from splashkit import *
def main():
spotlight_radius = 100 window_width, window_height = 800, 600 window = open_window("Mouse Visibility in Spotlight", window_width, window_height)
spotlight_center = point_at(window_width / 2, window_height / 2)
mouse_visible = True
while not window_close_requested(window): # Process user input events process_events()
# Get the current mouse position mouse_pos = mouse_position()
# Calculate distance from the mouse to the spotlight center dx = mouse_pos.x - spotlight_center.x dy = mouse_pos.y - spotlight_center.y distance = (dx ** 2 + dy ** 2) ** 0.5
# Determine whether to show or hide the mouse if distance <= spotlight_radius: if not mouse_visible: show_mouse() # Show the mouse mouse_visible = True else: if mouse_visible: hide_mouse() # Hide the mouse mouse_visible = False
# Clear the screen with black color clear_screen(color_black())
# Draw the spotlight as a circle fill_circle(color_white(), spotlight_center.x, spotlight_center.y, spotlight_radius)
refresh_window(window)
close_all_windows()
if __name__ == "__main__": main()