Skip to content

Instantly share code, notes, and snippets.

@maximvl
maximvl / python.red
Last active May 12, 2022 03:58
python game
Red [
author: {Maxim Velesyuk}
description: {
A Snake Game / basic version
specification by Edward de Jong, version 1
The game runs at 6 frames per second, and the snake moves one cell per frame. If the snake moves into the apple the length is increased by one, a crunch sound is emitted, and the apple is moved to a new cell. If the snake crosses over itself, then a beep is emitted and the part of the snake from that cell onward is erased. The snake wraps around the board in all four directions.
The playing board, drawn solid black, is subdivided into square cells of 42 points at the screen resolution. Since the window size will not be an even number of cells, the cells are stretched slightly so that all screen space is used by the grid. At the start, the snake is set to length 1 and positioned at cell (4,4). The apple, which is the goal of the snake to eat, is one cell drawn as a circle in HTML color crimson, and is placed at a random location on the board.
At the start of the game the snake is paused. A
-module(dirtest).
-include_lib("wx/include/wx.hrl").
-behaviour(wx_object).
-export([start/0, init/1,
terminate/2, code_change/3,
handle_info/2, handle_call/3, handle_cast/2, handle_event/2]).
start() -> wx_object:start_link(?MODULE, [], []).
%% Callbacks
init(Config) ->
wx:new(Config),
[warn] epoll_create: Too many open files
[warn] evutil_make_internal_pipe_: pipe: Too many open files
[err] evsig_init_: socketpair: Too many open files
@maximvl
maximvl / restarts.red
Last active August 14, 2019 12:30
CL condition-restarts in Red
Red [
author: "Maxim Velesyuk"
description: "Common Lisp condition-restart system implementation for Red"
]
; utils
*word-counter*: 0
gen-word: does [
*word-counter*: *word-counter* + 1
to-word append "G-" to-string *word-counter*
@maximvl
maximvl / poor-mans-scopes.red
Last active August 14, 2019 12:30
Dynamic variables in Red
Red [
author: "Maxim Velesyuk"
description: "Dynamic variables implementation for Red"
]
; utils
forskip: func ['series skipn body /local s] [
s: get series
while [ not tail? s ] [
do body
Red [
description: {simple game}
author: {Maxim Velesyuk}
version: 2.2
changelog: {
2.2
* added sleep to the loop to reduce CPU load
2.1
* added win screen display time
(a@127.0.0.1)10> Params2.
[{kill_if_fail,true},
{monitor_master,true},
{init_timeout,3000},
{startup_timeout,3000},
{startup_functions,[{erlang,node,[]}]},
{erl_flags,"-pa ../../_build/default/lib/*/ebin -config ../../test/test.config"}]
(a@127.0.0.1)11> ct_slave:start('b@127.0.0.1', Params2).
{error,boot_timeout,'b@127.0.0.1'}
(a@127.0.0.1)12>
(cl-defun perl-move-cursor (pos &optional buffer)
(let ((window (get-buffer-window buffer t)))
(message "window: %s / pos: %s" window pos)
(if window
(progn
(goto-char pos)
(set-window-point window pos)
(message "char at %s" (point))
(message "char2 at %s" (window-point window)))
(goto-char pos))))
@maximvl
maximvl / abc-score.red
Last active September 27, 2017 03:59
abc score for Red code
Red [
author: {Maxim Velesyuk}
usage: {
abc-score? <block of code>
abc-score? %file.red
abc-score? :some-function
}
description: {
The ABC software metric defines an ABC score as a triplet of values that represent the size of a set of source code statements.
An ABC score is calculated by counting the number of assignments (A), number of branches (B), and number of conditionals (C) in a program.
Red [
Author: "Toomas Vooglaid"
Date: 25-9-2017
Description: {Experiments with L-System}
]
ctx: context [
scale: origin: length: len: angle: width: delta-width: times-length: delta-length: delta-angle: aliasing?: stack: commands: none
defaults: [
scale 2.0
origin 300x500