Table of Contents
Videos

Recently while doing some Xmas shopping i game across the board game Catan it fitted into an idea i have had for a while about a game along these lines.
I Also wanted to see if i could build a game with the help of AI without coding a single thing myself.
After 26 Iterations i present you with
https://github.com/herepete/games/blob/main/catan.py
You will only need to install 1 package
pip3.11 install PrettyTable
It might not be fully finished but it was a fun experiment playing with AI.
I found the default chatgbt model of GPT-4o pretty good for the initial setup but when the script got more complicated to 200 ish lines plus it started struggling in the terms of removing core features without being asked.
It did get quite frustrating and then i tried chatgbt o1 model and it has worked really well. It made the occasional error between iterations but it was helpfull.
I found giving these instructions helped giving the AI some guard rails…
Version Incrementing:
Each new full version of the code should have its version number incremented on the second line. For example, after # Version 1.13
, the next full version you provide should be # Version 1.14
, then # Version 1.15
, and so forth.
Full Code with Each Update:
Whenever you request changes, I should provide the complete updated script—not just a snippet—so you have a full, up-to-date version of the code at each iteration.
Preserve Existing Code Unless Necessary:
Do not remove or rewrite large sections of code unless it’s required to implement the requested changes. Keep as much of the original logic and structure as possible, only adjusting or adding code where needed.
Implement Requested Features/Modifications Incrementally:
Each time you requested changes—like adding a 4th AI player, explaining aspects of the game, improving the trading logic, or allowing the human player to accept/reject/counter AI-offered trades—I incorporated those changes step-by-step, ensuring stability and that previous features remained intact.
Clarification and Reasoning:
Before implementing changes, I asked clarifying questions when needed to ensure I understood your requirements correctly. Where possible, I explained what was done and why, so you understood the reasoning behind each update.
No Removal Without Reason:
Unless you explicitly allowed or it was necessary for the change, I avoided removing or altering code unrelated to the requested features to maintain code integrity and continuity.
Enter your name: asdas
Welcome to Catan!
--- Purpose of the Game ---
Earn 10 Victory Points (VP) by building settlements, roads, and cities.
--- How the Game Works ---
1. The board is composed of hexes, each producing a specific resource (brick, lumber, ore, grain, wool) or desert.
Each hex has a number (2-12). At the start of a turn, you roll two dice. The sum determines which hexes produce resources.
2. Settlements adjacent to a producing hex earn 1 resource; cities earn 2 of that resource. Desert hexes never produce.
3. If a 7 is rolled, no one collects resources and the robber would be activated (not fully implemented here).
4. Your goal is to reach 10 VP. Settlements grant 1 VP, cities grant an additional VP over a settlement, reaching 2 total.
5. On your turn, you can:
- Build: Use resources to construct a settlement, road, or upgrade a settlement to a city.
- Trade: Offer your resources and request others. AI players consider fairness, scarcity, and personal benefit. You can accept, reject, or counter trades offered to you.
- Pass: If you pass without having built or traded, you gain 1 random resource as a bonus.
6. The game features AI players with different personalities (generous, fair, greedy) who evaluate trades differently.
7. Once you or another player reaches 10 VP, the game ends immediately and that player wins.
8. After the last player in a round finishes their turn, press Enter to continue and start the next round.
Starting the game!
asdas's turn!
--- Board ---
[1] wool (3) [2] grain (11) [3] wool (10) [4] desert (2)
[5] lumber (7) [6] ore (3) [7] grain (5) [8] lumber (7)
[9] brick (12) [10] brick (8) [11] brick (7) [12] ore (8)
[13] wool (11) [14] desert (6) [15] ore (8) [16] grain (2)
[17] lumber (12) [18] desert (12)
--- Dice Roll Explanation ---
You rolled a 7. The robber would be activated (not yet implemented):
- No hexes produce resources this turn.
- The robber would move to a chosen hex, blocking it.
- Players with >7 cards would discard half of them.
+-------------+-------+--------+-----+-------+------+-------------+--------+-------+----------------+
| Player | Brick | Lumber | Ore | Grain | Wool | Settlements | Cities | Roads | Victory Points |
+-------------+-------+--------+-----+-------+------+-------------+--------+-------+----------------+
| asdas | 2 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| AI Player 1 | 2 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| AI Player 2 | 0 | 0 | 3 | 1 | 1 | 0 | 0 | 0 | 0 |
| AI Player 3 | 2 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
+-------------+-------+--------+-----+-------+------+-------------+--------+-------+----------------+
Actions: 1. Build 2. Pass 3. Trade
Choose an action:
....
Playing around with OpenAI Swarm and ChatGBT and this was the result (although as you can see i went off on a tangent not using Swarm) but a fun excercise.
https://github.com/openai/swarm
I have uploaded to https://github.com/herepete/Ai_playing/blob/main/ai_agents.py
See my other AI posts about putting the OpenAI key in as a variable 🙂
$ cat ai_agents.py
#!/usr/bin/python3.11
import openai
import os
os.system('clear')
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
# Function to determine the most appropriate agent to respond
def select_agent(agents, user_input):
if "joke" in user_input.lower():
return "Joke Creator"
elif "fact" in user_input.lower() or "verify" in user_input.lower():
return "Fact Checker"
else:
return "Creative Thinker"
# Function for the agent to respond based on instructions
def agent_respond(agent, context):
try:
# Make the call to the OpenAI API with clear and explicit structure
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": agent["instructions"]},
*context
],
max_tokens=150
)
return response['choices'][0]['message']['content'].strip()
except Exception as e:
print(f"Error: {e}")
return None
# Function to create an agent
def create_agent(name, role, instructions):
return {"name": name, "role": role, "instructions": instructions}
# Create agents
agent_1 = create_agent("Fact Checker", "assistant", "You are a detailed fact-checker. Provide accurate and concise responses.")
agent_2 = create_agent("Creative Thinker", "assistant", "You are a creative agent that provides out-of-the-box thinking.")
agent_3 = create_agent("Joke Creator", "assistant", "You are a joke creator. Provide funny jokes when asked.")
# List of agents
agents = [agent_1, agent_2, agent_3]
# Initial explanation to the user
print("Welcome! We have three agents here to assist you:")
print("1. Fact Checker: This agent helps with verifying information, providing accurate answers, and fact-checking.")
print("2. Creative Thinker: This agent helps with brainstorming ideas, creative problem-solving, and thinking outside the box.")
print("3. Joke Creator: This agent helps you by creating jokes and providing humor.")
print("Feel free to ask any questions, and our most suitable agent will assist you.")
# Run an interactive conversation loop
while True:
# Ask user for input
user_input = input("\nWhat do you need help with today?\nYou: ")
# Break loop if user wants to quit
if user_input.lower() in ["quit", "exit"]:
print("Ending the conversation.")
break
# Determine the most appropriate agent based on user input
selected_agent_name = select_agent(agents, user_input)
selected_agent = next(agent for agent in agents if agent["name"] == selected_agent_name)
# Reset messages to contain only the most recent user input for new prompts
messages = [{"role": "user", "content": user_input}]
# Run the selected agent to process the current context
response = agent_respond(selected_agent, messages)
if response:
messages.append({"role": "assistant", "content": f"{selected_agent['name']} response: {response}"})
print(f"{selected_agent['name']} response: {response}")
else:
print(f"No response from {selected_agent['name']}.")
result
Welcome! We have three agents here to assist you:
1. Fact Checker: This agent helps with verifying information, providing accurate answers, and fact-checking.
2. Creative Thinker: This agent helps with brainstorming ideas, creative problem-solving, and thinking outside the box.
3. Joke Creator: This agent helps you by creating jokes and providing humor.
Feel free to ask any questions, and our most suitable agent will assist you.
What do you need help with today?
You: tell me a joke
Joke Creator response: Why did the scarecrow win an award? Because he was outstanding in his field!
What do you need help with today?
You: tell me a fact
Fact Checker response: Fact: The Earth is the only planet in our solar system known to support life.
What do you need help with today?
You: what is the meaning of life?
Creative Thinker response: The meaning of life is a deeply personal and subjective question that can have many different answers depending on individual beliefs, experiences, and perspectives. Some people find meaning in pursuing their passions, building connections with others, contributing to society, seeking personal growth, exploring spirituality, or simply in enjoying the present moment. Ultimately, the meaning of life is something that each person must decide for themselves based on what brings them fulfillment and purpose.
What do you need help with today?
You:
Available in Github at https://github.com/herepete/Fidelity/blob/main/chat_with_openai.py
A standalone script to allow you at the command line to chat with OpenAI
[ec2-user@ip-172-31-33-224 Fidelity]$ cat chat_with_openai.py
#!/usr/bin/python3
import openai
import os
# Your OpenAI API key
openai.api_key = os.getenv("OPENAI_API_KEY")
def chat_with_ai():
messages = [
{"role": "system", "content": "You are a helpful assistant."}
]
print("Start chatting with the AI! Type 'exit' to end the conversation.")
while True:
# Get user input
user_input = input("You: ")
# Exit the chat loop if the user types 'exit'
if user_input.lower() == 'exit':
print("Ending the conversation. Goodbye!")
break
# Add the user's message to the conversation history
messages.append({"role": "user", "content": user_input})
# Get the AI's response
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=150 # Set the maximum number of tokens for each response
)
# Extract and print the AI's response
ai_response = response['choices'][0]['message']['content']
print(f"AI: {ai_response}")
# Add the AI's response to the conversation history
messages.append({"role": "assistant", "content": ai_response})
chat_with_ai()
Sample Run
]# ./chat_with_openai.py
Start chatting with the AI! Type 'exit' to end the conversation.
You: Tell me a Joke
AI: Sure, here's a joke for you:
Why couldn't the bicycle stand up by itself?
Because it was two-tired!
You: nice one, tell me an intresting fact?
AI: Here's an interesting fact for you:
Honey never spoils! Archaeologists have found pots of honey in ancient Egyptian tombs that are over 3000 years old and still perfectly edible. Honey's high sugar content and low moisture levels create an environment that prevents the growth of bacteria and yeasts, making it one of the only foods that never spoils.
You:
Olama hosts LLM models and allows you to interact with them all locally
openwebui is a nice gui front end for Ollama and models
Ran from an Aws Vm, the basic Micro doesn’t have enough /tmp space and you have to fudge around with things.
The quickest solution is uping the instance type to something with more power a t2.xlarge seems to work well
curl -fsSL https://ollama.com/install.sh | sh
yum install pip -y
pip install ollama
ollama run llama3.1
curl -fsSL https://ollama.com/install.sh | sh
by following instructions on Download Ollama on Linux
yum install pip pip install ollama
ollama run llama3.1
find model in library and copy command
$ ollama list
NAME ID SIZE MODIFIED
llama3.1:latest 42182419e950 4.7 GB 38 minutes ago
gemma2:2b 8ccf136fdd52 1.6 GB 2 hours ago
$ ollama
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, --help help for ollama
-v, --version Show version information
Use "ollama [command] --help" for more information about a command.
$ cat /home/ollama_files/helloworld_testfile i have 5 oranges and 2 apples
if i eat 4 oranges and 1 apple
how much is left?
$ cat /home/ollama_files/helloworld_testfile | ollama run gemma2:2b "prompt"
Here's how to figure out the remaining fruit:
Oranges Left: You started with 5 oranges, and you ate 4, so you have
5 - 4 = 1 orange left.
Apples Left: You started with 2 apples, and you ate 1, leaving you
with 2 - 1 = 1 apple.
Answer: You have 1 orange and 1 apple left. 🍊🍎
# cat ./llm_test.py
#!/usr/bin/python3.9
import ollama
notes = "helloworld_testfile"
with open(notes,'r') as file:
content= file.read()
my_prompt = f"give me the answer {content}"
response = ollama.generate(model="gemma2:2b", prompt=my_prompt)
actual_response = response["response"]
print(actual_response)
# ./llm_test.py
Here's how to solve that:
Oranges: You started with 5, and you ate 4, so you have 5 - 4 = 1 orange left.
Apples: You started with 2, and you ate 1, so you have 2 - 1 = 1 apple left.
Answer: You have 1 orange and 1 apple left.
$ ollama run gemma2:2b
>>> tell me a joke
Why don't scientists trust atoms?
Because they make up everything! 😄
Let me know if you want to hear another one! 😊
>>> Send a message (/? for help)
I am not sure if i can do this justice a full watch of this Video is recommended
and the book
https://www.amazon.co.uk/Ultra-Processed-People-Stuff-That-Isnt-ebook
In our modern world, where convenience often takes precedence over health, many of us find ourselves succumbing to the allure of junk food. Dr. Chris Van Tulleken, a renowned medical doctor and television presenter, has extensively studied the reasons behind our cravings for unhealthy foods and offers practical solutions to curb this tendency. Understanding the science behind our cravings and implementing effective strategies can help us make healthier choices and improve our overall well-being.
Dr. Van Tulleken explains that our cravings for junk food are rooted in our biology and the food industry’s manipulation of our natural instincts. Here are some key factors contributing to our cravings:
Understanding the reasons behind our cravings is only half the battle. Dr. Van Tulleken offers practical strategies to help us break free from the grip of junk food:
Transitioning away from junk food is a journey that requires patience and persistence. Dr. Van Tulleken emphasizes the importance of understanding our cravings, making gradual changes, and celebrating small victories along the way. By implementing these strategies, we can take control of our eating habits and move towards a healthier, more balanced lifestyle.
Ultimately, breaking free from the grip of junk food is not just about willpower; it’s about understanding the science behind our cravings and making informed, mindful choices. With the guidance of experts like Dr. Chris Van Tulleken, we can empower ourselves to overcome these challenges and lead healthier, happier lives.
https://www.nhs.uk/live-well/eat-well/how-to-eat-a-balanced-diet/what-are-processed-foods/
https://www.healthline.com/nutrition/how-to-eat-less-processed-food
https://www.bbcgoodfood.com/howto/guide/ultra-processed-foods-what-to-avoid
In our busy lives, finding time to maintain a tidy home can feel overwhelming. However, you don’t need hours to make a significant difference in your living space. Introducing the 15-Minute Reset—a quick and effective method to tidy up a room and create a more organized, stress-free environment.
The beauty of the 15-Minute Reset lies in its simplicity and manageability. Setting aside just 15 minutes to focus on one room can lead to noticeable improvements without feeling like a daunting task. This method capitalizes on the idea that small, consistent efforts can lead to big results over time.
The 15-Minute Reset is a powerful tool for maintaining a clean and organized home, even with a busy schedule. By dedicating just a small portion of your day to tidying up, you can create a more inviting and stress-free environment. Try incorporating this simple practice into your daily routine and experience the benefits of a tidy space without the overwhelm.
Perception is a complex, multifaceted phenomenon. It shapes our understanding of the world, influencing how we interact with our environment and the people within it. Imagine perception as a camera lens, adjustable and capable of capturing different views depending on the angle and focus. In this blog post, we will explore the analogy of perception as an adjustable lens, delve into the concept of 3D goggles, and consider the experience of color blindness to illustrate how our perception can be limited and enriched.
Perception can be likened to an adjustable camera lens. When we look at a scene through a camera, changing the lens or the settings can drastically alter the image we capture. Similarly, our perception of reality can be adjusted by shifting our perspective, trying new experiences, and challenging our assumptions.
Imagine standing at a scenic overlook. One person might focus on the majestic mountains in the distance, while another might notice the intricate details of the wildflowers at their feet. Both are valid perspectives, shaped by individual interests and experiences. By consciously adjusting our lens, we can appreciate different aspects of the same scene, gaining a richer, more nuanced understanding of the world around us.
3D goggles enhance our perception by adding depth to a previously flat image. When we put on 3D goggles at a movie theater, what was once a two-dimensional picture suddenly becomes a vivid, immersive experience. This transformation mirrors how expanding our perception can add depth and richness to our lives.
Consider how traveling to a new country can change our perception of cultural norms. Experiencing different traditions, cuisines, and ways of life can broaden our understanding, making us more empathetic and open-minded. Similarly, learning a new skill or hobby can provide a fresh perspective, allowing us to see the world through a different lens.
By embracing new experiences and viewpoints, we can enhance our perception, much like putting on a pair of 3D goggles.
Color blindness is a condition where individuals perceive colors differently due to the absence or malfunction of certain color-detecting cells in their eyes. This condition highlights the fact that our perception is not always an accurate representation of reality but is instead shaped by our biological limitations.
For someone with color blindness, the vibrant hues of a sunset might appear muted or indistinguishable. This doesn’t make their perception less valid, but it does differ from the norm. Understanding color blindness can teach us valuable lessons about the diversity of human perception.
Just as we use corrective lenses to improve our vision, we can employ strategies to overcome our perceptual limitations. Educating ourselves about different viewpoints, practicing mindfulness to stay present, and actively seeking out new experiences can help us see beyond our innate biases and expand our understanding of the world.
Our perception is a powerful tool that shapes our reality. By adjusting our lens, donning metaphorical 3D goggles, and recognizing the limitations of our perception, we can enrich our understanding and interactions with the world.
Cultivating an open and flexible perception allows us to appreciate the beauty of diversity and complexity in life. It enables us to navigate our personal and professional lives with greater empathy, creativity, and mindfulness. So, let’s embrace the adjustable nature of our perception, continually striving to see the world through different lenses and enriching our lives in the process.
Most pages on this site have a cartoon at the top of the page & 99% of them have been generated by AI.
This page is dedicated to playing around with AI Art to try and get the best picture available
This page has some really good examples of styles you can use in your prompt
https://www.shutterstock.com/ai-image-generator/styles?consentChanged=true
Going straight to Dall-e gives a nicer feedback rather than calling it directly from chatgbt
Here’s the image depicting a young girl, accompanied by her parents, as she first steps foot on land at Coney Island, New York, in the 1800s. The scene captures the moment of their arrival, filled with hope and trepidation, rendered in a vivid oil painting style. Feel free to use this for your project!
Here are two images depicting the construction of the pyramids in ancient Egypt. These scenes show workers engaged in various activities, with the grandeur of the partially constructed pyramids and the geographical context highlighted. Feel free to use these images for your project!
i pasted this in and asked “do a oil painting of this”
“do a futuristic version please”
and now a plastic brick version
“show me 2 more versions of the orginal picture uploaded at the start of this conversation
1) watercolor
2) pencil sketch”
give me a representation of what does £1,000 look like
Here are the representations of £10,000 in cash, featuring two hundred £50 notes.
Here are the representations of £100,000 in cash, featuring two thousand £50 notes.
Here are the representations of £1,000,000 in cash, featuring twenty thousand £50 notes.
After a few issues with copywriting the best way to find a similar picture was
typing “Recreate this” and paste in a picture taken from Google photos
“To recreate an image inspired by the provided one, I’ll describe a scene based on it without directly replicating the copyrighted artwork.
Let’s create an image featuring a surreal architectural scene with multiple staircases intersecting at impossible angles, with figures walking on them in various directions, some upside down, and the overall structure having a maze-like appearance.
I’ll go ahead and generate this for you.”
“create a picture in roman times of soldiers coming out of a tavern into the dirtiness of the city”
“A serene rural landscape inspired by John Constable’s “The Hay Wain.” The scene features a picturesque countryside with a gently flowing river in the foreground. A wooden cart is half-submerged in the water, being pulled by horses. On the left, there is a charming old farmhouse surrounded by trees, with smoke gently rising from the chimney. The sky is filled with fluffy white clouds, casting soft shadows on the lush green fields. The painting should evoke a sense of peacefulness and natural beauty, with attention to detail in the foliage, water reflections, and overall composition, capturing the essence of Constable’s pastoral scenes.”
An oil painting similar to John Constable's 'The Hay Wain,' imagining it as if Constable painted another version one year later. The scene features a picturesque countryside with a gently flowing river in the foreground. A wooden cart is half-submerged in the water, being pulled by horses led by a laborer. On the left, there is a charming old farmhouse surrounded by trees, with smoke gently rising from the chimney. The sky is filled with fluffy white clouds, casting soft shadows on the lush green fields. The painting should evoke a sense of peacefulness and natural beauty, with attention to detail in the foliage, water reflections, and overall composition. The oil painting technique should emphasize rich textures and colors, capturing the essence and feel of Constable's original masterpiece.
I love this picture which is from a bing background
i struggled to get anything better than the original
my prompts were:
“replicate as near as you can this picture , its a lavender field”
make it look like a photo you would take
with the orginal i added , make it an oil painting the technique should emphasize rich textures and colors.
with the orginal i added , make it an oil painting the technique should emphasize rich textures and colors like how constable would have painted it
give me the prompt i would need to recreate this
Here is the prompt you would need to recreate the oil painting:
“An oil painting of a vast lavender field at sunset, with rows of vibrant purple flowers stretching towards the horizon. The technique emphasizes rich textures and colors, reminiscent of John Constable’s style, with thick brushstrokes creating a sense of depth and movement. The sky is painted with hues of pink, orange, and purple, blending beautifully into a gradient. In the center of the field stands a solitary tree, adding a focal point to the landscape. Mountains can be seen in the distant background. The atmosphere is serene and picturesque, captured in a vibrant and textured style.”
Do this as a water colour
“Here are the watercolor versions of the serene lakeside village.”
Here are the futuristic versions of the serene lakeside village
I was trying to create a visual image of
Query i gave to Dalle “create a cartoon of a moat around a castle which is under construction
outside the moat i would you to signify threats and inside the castle safery,protection,honesy,family,caring,support and welcoming”
Using Chatgpt new image creation in March 2026
Create image hi create a funny cartoon picture of a company denying a large security breach in the background have a picture of a robber making off with a physical computer
See a picture at the top of this post for Coney Island v1
V2 is based on ChatGPT4o new image creation March 2025
create an image depicting a young girl, accompanied by her parents, as she first steps foot on land at Coney Island, New York, in the 1800s. The scene captures the moment of their arrival, filled with hope and trepidation, rendered in a vivid oil painting style.
First version above new one using the new create image feature
Create image give me a representation of what does £1,000 look like