This is the problem - I have been asked about accommodation bookings, and been thinking of an easy scenario.
Table screens would be the best. The following idea is only good for the current day.
Create a custom view, Courts x number of periods (1/2 or full hour) - so you would have courts across and hours down - so for 4 courts x eight 1 hour booking times = 32 tables
1. When someone reserves a court, add them as a customer, assign them to a table (Court Time) and add a reserved item ($5), close ticket - court now reserved (orange).
2. When the customer comes and pays, add the court fee to the ticket, and receive payment (but not for reserve fee) - so $5 will be owing, and print receipt - court now in use (red)
3. When customer has finished with court, go back to court, release ticket load, void reserved item and close ticket to free up court.
Instead of an in use status (red), you can just book a court with the court fee, and when the customer arrives, they pay and use the court, and it will just show as available.
Now with V3, I will have to think a bit more and have a play with some configs before I make suggestions.